2

我正在尝试从 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

问题

即使应用程序池帐户可以访问文件夹和文件,为什么上面的代码仍然被拒绝访问?

有没有办法确认我的代码实际上正在尝试使用我认为它正在使用的凭据访问该文件?

4

1 回答 1

1

要进行调试,我首先尝试的是在 web.config 中使用模拟,以强制 ASP.NET 进程以您自己的身份运行,或者您可以保证可以访问 UNC 文件路径的帐户。

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

就个人而言,我会选择在应用程序中使用模拟而不是 IIS 应用程序池中的凭据,但这就是我。

这是一篇关于服务器进程标识和调试的好文章,我用过几次。

于 2012-05-23T19:27:08.467 回答