我正在尝试从ASP.NET页面访问网络驱动器。从技术上讲,它是一个SharePoint应用程序页面(_layouts / mycompany / mypage.aspx),但我相信原则是相同的。
string filePath = @"\\companyshare\temp\test.txt";
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
当我点击上面代码中的第二行时,我收到错误:
拒绝访问路径'\ companyshare \ temp \ test.txt'。
此网站的应用程序池在域帐户(MYCOMPANY \ adminacct)下运行。 MYCOMPANY \ adminacct可以访问文件\ companyshare \ temp \ test.txt。我已经确认通过使用MYCOMPANY \ adminacct凭据登录服务器并使用代码中的相同路径导航到该文件。
我正在运行IIS 7.5
问题
即使应用程序池帐户有权访问该文件夹和文件,上述代码仍然会被拒绝访问?
有没有办法确认我的代码实际上是否尝试使用我认为正在使用的凭据来访问该文件?
答案 0 :(得分:1)
要进行调试,我首先尝试在web.config中使用模拟,强制ASP.NET进程自己运行,或者您可以保证可以访问UNC文件路径的帐户。
<identity impersonate="true" userName="yourDomain\yourAccountName" password="xyz" />
就个人而言,我会选择在应用程序中使用模拟而不是IIS应用程序池中的凭据,但那就是我。
这是good article on server process identity and debugging我多次使用过。