IIS 7.5无法从托管代码访问文件

时间:2010-04-07 18:20:41

标签: .net iis iis-7.5

我正在开发一个从IIS 7.5 Web服务器部署一次的项目。安装父应用程序(即设置IIS站点)后,我可以从远程框中点击click-once应用程序配置文件的URL。 但是,当我尝试从我的应用程序(以及下面的存根应用程序)执行相同的操作时,我获得了401 Unauthorized。

从IE和.NET应用程序中访问URL有什么区别? 文件和目录本身具有完全控制权,目前授予网络服务器上的所有人,我是该框的管理员。我们仅使用Windows身份验证和NTLM。

谢谢, -Bob

这是在doc.Load()行上生成401 - 未授权的存根应用程序。我可以从IE成功点击相同的URL并打开文件...

static void Main(string[] args)
    {
        Console.WriteLine("Config Test");
        string filename = "http://dev-rs/myClient/myClickOnce/myApp.config.xml";
        Console.WriteLine(filename);
        XmlDocument doc = new XmlDocument();
        doc.Load(filename);
        Console.WriteLine("Loaded");
        Console.WriteLine("Inner Text : " + doc.InnerText);
    }

1 个答案:

答案 0 :(得分:1)

确立原则:

AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

从URL加载时,XMLDocument不支持传递凭据。而是从WebRequest流加载并在加载之前在请求上设置凭据。

WebRequest request = HttpWebRequest.Create(filename);
request.Credentials = CredentialCache.DefaultCredentials;

XmlDocument doc = new XmlDocument();
doc.Load(request.GetResponse().GetResponseStream());