2012-05-23 61 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

相关问题