1

IIS7と.net4.0を実行しています。長時間実行されているリクエストが原因でサーバーがタイムアウトすると、エラーページが表示されますが、エラーコードは、私が期待している408または503ではなく500です。タイムアウトの場合は別のエラーページを表示したいのですが<customErrors>、500エラーが発生するだけの場合は、このセクションでこれを構成できません。これは構成の問題ですか?

4

1 に答える 1

2

このようなコードをglobal.asax.csに追加できます

public class Global : System.Web.HttpApplication
{
protected void Application_Error(Object sender, EventArgs e)
{
    Exception ex = HttpContext.Current.Server.GetLastError();
    if (ex != null && ex is HttpException && ex.Message == "Request timed out.")
    {
       HttpContext.Current.Response.StatusCode = 503;
       HttpContext.Current.Response.End();
    }
}
}

これは正しく機能せず、Response.End()がない場合でも500エラーを返すことがわかりました。あなたの質問を考えると、代わりにリダイレクトを実行して、上記の代わりに503を出力するエラーページを表示するかどうかはわかりません。

その本当にASP.NETは500ステータスを返し、IISはそれを渡しているだけです。

于 2011-03-18T23:51:46.077 に答える