1

リモート サーバー上の Web サービスを呼び出す ASP.NET Web アプリケーションがあります。リモート サーバーで何らかの障害が発生したためにアプリケーションが Web サービスにアクセスできないことを、アプリケーションが検出できるようにしたいと考えています。

アプリケーションが、リモート サーバーでの障害と他の状況による障害を区別できることが不可欠です。たとえば、Web サービスの URL がファイアウォールによってブロックされていることと、リモート サーバー上の Http サービスが利用できないことの違いを検出できなければなりません。

誰でもこれを行う方法を提案できますか? 理想的には、ソリューションは HttpWebResponse オブジェクトで返される HttpStatusCode を使用します。

4

1 に答える 1

1

リモート サーバーを呼び出すコードを try 句で囲み、WebException をキャッチします。WebException オブジェクト内には、ステータス コードとリモート サーバーからの応答に関するその他の有益な情報を含む HttpWebResponse があります。

try
{
    var request = (HttpWebRequest)WebRequest.Create("https://remote.service.com/getdata");
    request.Method = "GET";
    HttpWebResponse response = request.GetResponse() as HttpWebResponse
}
catch (WebException wx)
{
    HttpWebResponse webExceptionResponse = (HttpWebResponse)wx.Response;
    var sr = new StreamReader(webExceptionResponse.GetResponseStream(), Encoding.UTF8);
    string jsonResult = sr.ReadToEnd();
    HttpStatusCode status = webExceptionResponse.StatusCode;
}
于 2012-08-15T23:43:46.640 に答える