0

IIS 5.1(ローカルホスト上)を実行しているローカルシステムに2つのWebサイトをセットアップしています。あるWebサイトを別のWebサイトから呼び出しています。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;
    }
}

このコードを実行して、401HTTPステータスコードを取得します。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 に答える