2010-05-05 64 views
0

我有一些ASP.NET文件訪問和操作,我用於文件訪問的方法如下。現在我需要訪問另一個服務器共享文件夾上的文件,該怎麼做?我可以輕鬆地將文件路徑更改爲共享文件夾路徑,但由於共享受密碼保護,因此我得到「無法訪問」錯誤。 據我所知,我需要以某種方式發送憑據到遠程服務器之前執行下面的方法。怎麼做?ASP.NET訪問另一臺計算機共享文件夾中的文件

FileStream("c:\MyProj\file.doc", FileMode.OpenOrCreate, FileAccess.Write) 
Context.Response.TransmitFile("c:\MyProj\file.doc"); 

問候, 托馬斯

回答

2

ASP.NET應用程序(默認)將在IIS6執行 「ASPNET」 計算機帳戶下。因此,你有兩個選擇:

  • 配置您的ASPNET應用到下一個(弱)的域帳戶運行的權限來訪問遠程計算機的共享
  • 設置共享上的權限,以允許訪問「每個人都「(不推薦)
  • 禁用窗體身份驗證並在ASP.NET應用程序中使用Windows身份驗證。關閉web.config中的模擬,IIS應將當前正在使用您的Web應用程序的用戶的憑據傳遞給底層共享(我認爲)。

例如,如果您的用戶都在您的Intranet上擁有域帳戶,則後一選項僅適用。我會繼續環顧四處添加憑證的方式,但如果可能的話,我不確定我的頭頂。

HTH,

Richard。

+0

謝謝你的回答!不是三個你建議的解決方案符合我的需求。第二個看起來很容易實現,但它可以訪問所有用戶共享,不幸的是,Windows不允許完全隱藏共享。 我試圖使用映射網絡驅動器映射共享文件夾作爲驅動器,不幸的是,這也不適用於IIS6。 – Tomas 2010-05-05 10:16:19

+0

@Tomas - 映射網絡驅動器並不是真正實現它的最好方式,因爲它們是按登錄用戶而不是每臺計算機映射的。如果您確實需要這樣做,那麼Scott Hanselman的博客上有這方面的工作。您可以嘗試創建一個新的域用戶帳戶(可能稱爲WebShare或其他),並將其授予您的網絡共享。然後,您可以右鍵單擊IIS6中的應用程序,轉到「屬性」,然後將工作進程更改爲「WebShare」。這將迫使您的Web應用程序採用「WebShare」標識,因此它將能夠訪問該共享。 – Richard 2010-05-05 12:46:57

+0

理查德,你的建議有效!感謝您的幫助。 – Tomas 2010-05-07 10:48:38

相關問題