ASP.Net 単一ファイル Web サービス (実装.ashx
を含むファイル) があり、 500 内部サーバー エラーステータス コードを含むIHttpHandler
応答としてエラーを返す必要があります。これは、PHP では比較的簡単に行うことができます。
header("HTTP/1.1 500 Internal Server Error");
header("Content-Type: text/plain");
echo "Unable to connect to database on $dbHost";
ASP.Net (C#) に相当するものは次のとおりです。
Context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
Context.Response.ContentType = "text/plain";
Context.Response.Write("Unable to connect to database on " + dbHost);
もちろん、これは期待どおりには機能しません。代わりに、IIS は 500 ステータス コードを傍受し、私がResponse
オブジェクトに書き込んだものを破棄し、アプリの構成方法に応じて、デバッグ情報またはカスタム エラー ページのいずれかを送信します。
私の質問 - この IIS の動作を抑制し、IHttpHandler
実装からエラー情報を直接送信するにはどうすればよいですか?
このアプリは PHP からの移植です。クライアント側はすでに書かれているので、私は基本的にこの仕様にこだわっています。残念ながら、200 ステータス コードでエラーを送信することは、型にはまらないものです。
理想的には、動作をプログラムで制御する必要があります。これは、「このファイルを編集する」および「この IIS 設定を変更する」補足説明なしで配布したい SDK の一部であるためです。
ありがとう!
編集:ソート。Context.Response.TrySkipIisCustomErrors = true
チケットでした。わお。