下面添加了更正:有问题的代码不是 IIS 7 应用程序的一部分(无应用程序池)。
我有一个 IIS 虚拟目录,其中包含一个包含以下代码的 aspx 页面:
System.Net.WebRequest wr = System.Net.WebRequest.Create( @"file://unc-share/directory/file.pdf" );
wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
WebResponse response = wr.GetResponse();
调用 GetResponse() 时,我收到“访问路径 '\unc-share\directory\file.pdf' 被拒绝”。错误。
我已将应用程序配置为集成 Windows 身份验证(禁用所有其他身份验证类型),并启用 ASP.NET 模拟。
我已经能够验证 ASP.NET 模拟是否使用与我用来访问该站点的 Windows 域帐户相同的身份。文件所在的 UNC 共享是一个独立的 Windows 系统,不托管 Web 服务器,并为此同一帐户设置了“完全控制”权限。
我还尝试使用 FileStream 实例访问该文件,得到相同的结果。
一直在这个网站和其他网站上深入研究这个问题,但没有找到任何与我想要做的事情相匹配的建议,也没有找到解决问题的建议。
有什么想法吗?
最佳答案
像这样访问路径:
System.IO.File.ReadAllText(@"\\uncshare\directory\file.pdf");
此代码片段的重要部分是路径的格式以及 WebRequest 的缺失。您可以使用多种方法来打开该文件。我使用 File.ReadAllText 作为示例,但您也可以使用 FileStream 轻松打开文件。
不需要使用 WebRequest,因为该文件不在 Web 服务器后面。
关于ASP.NET "access is denied"访问 UNC 路径时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9914025/