ASP.NET 访问 UNC 路径时出现“访问被拒绝”错误

问题描述 投票:0回答:2

下面添加了更正:有问题的代码不是 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 ile.pdf' 被拒绝”。错误。

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

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

我还尝试使用 FileStream 实例访问文件,得到相同的结果。

一直在这个网站和其他网站上挖掘这个问题,但没有找到任何与我想做的事情相匹配的建议,也没有找到解决问题的建议。

有什么想法吗?

asp.net windows authorization
2个回答
2
投票

像这样访问路径:

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

此片段的重要部分是路径的格式和 WebRequest 的缺失。您可以使用多种方法来打开该文件。我使用

File.ReadAllText
作为示例,但您可以使用 FileStream 轻松打开文件。

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


0
投票

我相信格式是正确的。不过微软专门写了

FileWebRequest 类依赖于 File 类来进行错误处理和代码访问安全。

关于 Credentials 属性..

凭证
获取或设置与此请求关联的凭据。 此属性保留供将来使用

实际上,这意味着文件共享的底层组件基于 System.IO 类。因此,在传递凭据时,您依赖于基于 Windows 的身份验证。

来源:https://learn.microsoft.com/en-us/dotnet/api/system.net.filewebrequest?view=net-8.0

© www.soinside.com 2019 - 2024. All rights reserved.