2012-05-23 60 views
2

我試圖從ASP.NET頁面訪問網絡驅動器。從技術上講,這是一個SharePoint應用程序頁面(_layouts/mycompany/mypage.aspx),但我相信這些原則是相同的。訪問網絡驅動器時,ASP.NET應用程序獲取system.unauthorizedaccessexception

string filePath = @"\\companyshare\temp\test.txt"; 
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); 

當我打的代碼的第二線以上我得到的錯誤:

Access to the path '\companyshare\temp\test.txt' is denied.

此網站的應用程序池在一個域帳戶下運行(MyCompany的\ adminacct)。 MYCOMPANY \ adminacct可以訪問文件\ companyshare \ temp \ test.txt。我已經確認,通過使用MYCOMPANY \ adminacct憑據登錄到服務器並使用代碼中的相同路徑導航到文件。

我運行IIS 7.5

問題

怎麼會在上面的代碼仍然得到拒絕訪問,即使該應用程序池帳戶有權訪問的文件夾和文件?

有沒有辦法確認我的代碼實際上是在用我認爲正在使用的憑據來訪問該文件?

回答

1

爲了進行調試,我嘗試的第一件事是在web.config中使用模擬,強制ASP.NET進程作爲自己運行,或者您可以保證可以訪問UNC文件路徑的帳戶。

<identity impersonate="true" userName="yourDomain\yourAccountName" password="xyz" /> 

就我個人而言,我會選擇在應用程序中通過IIS應用程序池中的憑據使用模擬,但這就是我。

這是我用過的幾次good article on server process identity and debugging

+0

這聽起來很基本,但您如何確認您在特定帳戶下運行?我想確認,無論我做什麼改變都在做我期望他們做的事情。 – RWL01

+0

我發佈了一篇很好的文章。我用它在過去取得了巨大的成功。不知道您使用的是哪個版本的IIS - 您可能需要在您的問題中注意這一點。 –

+0

它的工作原理就是這麼簡單。謝謝。 – RWL01

相關問題