System.Net.WebException:远程服务器返回错误:(401)未经授权。在生产服务器上

时间:2015-11-02 08:25:17

标签: c# asp.net iis

我正在编写以下代码,以使我的应用程序访问另一个内部页面:

    WebClient client = new WebClient();
    String DummyPageUrl = HttpContext.Current.Request.Url.Scheme + "://" +    HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath.TrimEnd('/') + "/Maintenance.aspx";
    client.DownloadData(DummyPageUrl); 

它在登台服务器上工作正常,但相同的代码给出了#34; System.Net.WebException:远程服务器返回错误:(401)未经授权。"客户端的生产服务器上的错误。但是,当我重写下面的代码时,它在那里工作:

String DummyPageUrl = HttpContext.Current.Request.Url.Scheme + "://" +    HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath.TrimEnd('/') + "/Maintenance.aspx";
System.Net.WebRequest request = System.Net.HttpWebRequest.Create(DummyPageUrl);
request.UseDefaultCredentials = true;
request.PreAuthenticate = true;
request.Credentials = CredentialCache.DefaultCredentials;
System.Net.WebResponse response = request.GetResponse();  

但问题是我使用Pechking dll将应用程序中的另一个页面转换为pdf。因此,当我将页面的url提供给dll时,它也会出现相同的错误。现在,如果我自己使用上面的第二种方法获取html内容并提供给Pechkin dll,我会在生成的pdf中遇到格式化问题。所以,事实上,我只是希望服务器允许代码在应用程序中发送请求页面的请求。 我还检查了服务器上的IIS设置。例如,在那里启用匿名身份验证。我在应用程序池中设置了托管流水线模式作为' Classic'就像我们在登台服务器上一样。但似乎没有任何效果。我想我们仍然缺少一些设置。 请帮忙。

0 个答案:

没有答案