.net IIS 7.5 can';无法从托管代码访问文件

.net IIS 7.5 can';无法从托管代码访问文件,.net,iis,iis-7.5,.net,Iis,Iis 7.5,我正在处理一个从IIS7.5Web服务器部署的click once项目。安装父应用程序(即设置IIS站点)后,我可以从远程框中点击click once应用程序配置文件的url。 然而,当我尝试从我的应用程序(和下面的存根应用程序)执行相同的操作时,我会得到一个未经授权的401 从IE点击URL和从.NET应用点击URL有什么区别? 目前,文件和目录本身对Web服务器上的每个人都有完全的控制权,我是box的管理员。我们仅对NTLM使用Windows身份验证 谢谢, -鲍勃 下面是一个存根应用程序,

我正在处理一个从IIS7.5Web服务器部署的click once项目。安装父应用程序(即设置IIS站点)后,我可以从远程框中点击click once应用程序配置文件的url。
然而,当我尝试从我的应用程序(和下面的存根应用程序)执行相同的操作时,我会得到一个未经授权的401

从IE点击URL和从.NET应用点击URL有什么区别?
目前,文件和目录本身对Web服务器上的每个人都有完全的控制权,我是box的管理员。我们仅对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);
    }

确立原则:

AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
XMLDocument不支持从URL加载时传递凭据。而是从WebRequest流加载,并在加载之前设置请求的凭据

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

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

成功了!注意到我在应用程序的后续Web服务调用中没有这样做…我还必须使用CredentialCache.DefaultCredentials在那里设置凭据。