0

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

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

谢谢,-鲍勃

这是在 doc.Load() 行上产生 401 - Unauthorized 的存根应用程序。我可以从 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);
    }
4

1 回答 1

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());
于 2010-04-07T18:50:57.813 回答