0

我在运行 IIS 5.1(在本地主机上)的本地系统上设置了两个网站。我正在从另一个网站调用一个网站。我正在使用 ASP.NET、C# 2.0。

public static String executeWebRequest(string url, Boolean esmRequest)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        UTF8Encoding encoding = new UTF8Encoding();
        Stream requestStream = null;
        HttpWebResponse response = null;
        StreamReader responseStream = null;
        string responseString;

        try
        {
            //post request
            request.Method = "POST";

            if (esmRequest)
            {
                //request.UseDefaultCredentials = true;
                request.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["ESMServerUserName"], ConfigurationManager.AppSettings["ESMServerPassword"]);
            }
            else
            {
                //request.UseDefaultCredentials = true;
                request.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["ESMServerUserName"], ConfigurationManager.AppSettings["ESMServerPassword"]);
            }

            requestStream = request.GetRequestStream();
            requestStream.Write(new byte[0], 0, 0);
            requestStream.Close();

            //get response
            response = (HttpWebResponse)request.GetResponse();
            responseStream = new StreamReader(response.GetResponseStream(), encoding);
            responseString = responseStream.ReadToEnd();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            if (requestStream != null)
            {
                requestStream.Close();
            }

            if (response != null)
            {
                response.Close();
            }

            if (responseStream != null)
            {
                responseStream.Close();
            }
        }

        return responseString;
    }
}

我运行此代码并获得 401 HTTP 状态代码。1 个错误,而当我在浏览器中粘贴相同的 URL 时,它可以完美执行。

我已经使用http://support.microsoft.com/kb/89686/en-us启用了 DisableLoopbackCheck

我该如何解决这个问题?

4

1 回答 1

0

我能够通过此更改修复它

var cache = new CredentialCache();

NetworkCredential credential = new NetworkCredential(ConfigurationManager.AppSettings["ESMServerUserName"], ConfigurationManager.AppSettings["ESMServerPassword"]);

cache.Add(new Uri(url), "Basic", credential);
request.Credentials = cache;       
于 2012-12-21T08:47:54.693 回答