500内部サーバーエラーステータスコードで応答としてエラーを返すことができる必要があるASP.Net単一ファイルWebサービス(IHttpHandler
実装を含む.ashx
ファイル)があります。これは、PHPで行うには比較的簡単なものである:ASP.Netでステータスコード500を送信しても応答に書き込む方法はありますか?
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の一部であるため、理想的には、私は、プログラムによって動作を制御する必要があります。
ありがとうございます!
をソートしました。 がチケットだった。ワオ。
可能であれば、私は、このような生産現場でのデータベースの場所などの内部情報を与えないだろう - ハッカーはこのようなものを得ることが大好き、彼らの攻撃がはるかに容易になります。 – devstuff
良い点ですが、これはセキュリティで保護されたWebサービスであり、Webサイトではありません。以前に成功したHTTP認証なしではデータベース接続も試行されません:) –