2012-03-28 193 views
2

下面添加了更正:相关代码不是IIS 7应用程序(无应用程序池)的一部分。访问UNC路径时出现ASP.NET“访问被拒绝”错误

我有,包括用下面的代码aspx页的IIS虚拟目录:

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共享\目录\ file.pdf'被拒绝。“错误。

我的应用程序配置为集成Windows身份验证(所有其他身份验证类型都被禁用),ASP.NET模拟已启用。

我已经能够验证ASP.NET模拟是否使用与我用来访问该站点的Windows域帐户相同的标识。 UNC共享文件所在的位置,这是一个独立的Windows系统,不托管Web服务器,该位置为该同一帐户设置了“完全控制”权限。

我也尝试使用FileStream实例访问文件,结果相同。

在这个网站和其他人的这个问题上一直在挖掘,但没有找到任何与我正在尝试做什么相匹配的建议,也没有找到解决问题的方法。

任何想法?

回答

2

访问这样的路径:

System.IO.File.ReadAllText(@"\\uncshare\directory\file.pdf"); 

这段代码的重要组成部分,是路径的格式和不存在的WebRequest的。有几种方法可以用来打开文件。我以File.ReadAllText为例,但您可以使用FileStream轻松打开文件。

应该不需要使用WebRequest,因为该文件不在Web服务器后面。

+0

澄清:该文件可能是一个文本文件,但它通常不会是 - pdf,docx,各种其他非文本格式。此外,该文件位于远程系统上,可通过UNC路径访问。无论如何,我最终需要的是将流传递给不同的应用程序,而不是文件的内容。而且,即使使用文本文件,ReadAllText也会抛出相同的错误。 – Hoobajoob 2012-03-28 21:08:57

+0

@hoobajoob,我以'ReadAllText'为例。例如,您可以将'ReadAllBytes'用于二进制文件或使用阅读器打开文件。我想这并不重要,因为你得到的是同样的错误。您是否可以通过在服务器中键入开始>运行对话框来访问UNC路径? – 2012-03-28 21:50:28

+0

是的,我测试过的UNC路径可以从服务器访问。 – Hoobajoob 2012-03-28 22:07:41