ここで説明されているように、app_offline.htm ファイルを使用しています: http://weblogs.asp.net/scottgu/archive/2005/10/06/426755.aspxで、古い asmx Web サービスをオフラインにします。
すべて正常に動作し、クライアント エンドは次のような HTTP 503 例外を取得します。
Exception : System.Net.WebException
The request failed with HTTP status 503: Service Unavailable.
Source : System.Web.Services
Stack trace :
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
私の質問: クライアント アプリケーションが返された app_offline.htm ファイルの内容を読み取ることは可能ですか? そのファイルの基本的な HTML には、「アプリケーションは現在メンテナンス中です」のような役立つテキストがあります。Fiddler を使用すると、このファイルの内容が応答で返されることがわかります。
この html 応答を解析して、ユーザーにより多くの情報を提供できると便利です。(つまり、システム メンテナンスによる 503 エラーと、システムの過負荷などによるその他の 503 エラーを区別することができます)。
編集: BluesRockAddict の反応は良さそうですが、現在ストリームは利用できないようです。例:
// wex is the caught System.Net.WebException
System.Net.WebResponse resp = wex.Response;
byte[] buff = new byte[512];
Stream st = resp.GetResponseStream();
int count = st.Read(buff, 0, 512);
ストリームを読み取ろうとする上記の最後の行は、次のようになります。
Exception : System.ObjectDisposedException
Cannot access a closed Stream.
Source : mscorlib
Stack trace :
at System.IO.__Error.StreamIsClosed()
at System.IO.MemoryStream.Read(Byte[] buffer, Int32 offset, Int32 count)