从另一个网站调用一个localhost网站时未经授权(401)

时间:2012-12-20 07:04:46

标签: asp.net http-status-code-401

我在运行IIS 5.1的本地系统上设置了两个网站(在localhost上)。我打电话给另一个网站。我正在使用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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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;       
相关问题