12

URL のルーティングを使用する C# Web フォーム ASP.NET 4.0 Web アプリケーションがあります。なんらかの理由で、web.config の system.web セクションで定義されたカスタム エラーが完全に無視され、IIS エラーがフォールバックします。

これは完全に無視されます

  <system.web>
    <customErrors mode="On">
      <error statusCode="500" redirect="~/Error" />
      <error statusCode="404" redirect="~/404" />
      <error statusCode="403" redirect="~/Error" />
    </customErrors>
  </system.web>

この部分が引き継がれます

  <system.webServer>
    <httpErrors>
      <!--<clear />-->
      <remove statusCode="500" subStatusCode="-1" />
      <remove statusCode="404" subStatusCode="-1" />
      <error statusCode="404" subStatusCode="-1" path="/App1/404" responseMode="Redirect" />
      <error statusCode="500" prefixLanguageFilePath="" path="/App1/Error" responseMode="Redirect" />
    </httpErrors>
  </system.webServer>

これは、私のアプリケーションではなく IIS ネイティブにフォールバックするという事実によって、Elmah が私の 404 例外を正しくログに記録することを完全に回避するという事実を除けば、小さな不便です。

編集:そのような提案を避けるために、customErrorsが機能しなくなった後にのみhttpErrors構成を追加したので、何もありません。

4

3 に答える 3

14

設定する必要がある IIS エラー メッセージを無効にするには

  Response.TrySkipIisCustomErrors = true;

あなたのエラーページで。その後、エラー メッセージが問題なく表示されるはずです。

于 2010-07-18T12:55:07.760 に答える
11

使用する代わりに:

Response.TrySkipIisCustomErrors = true;

これを Web.config で使用します。

<httpErrors errorMode="Custom" existingResponse="Replace">
于 2012-10-02T12:18:06.330 に答える
3

2 つの方法で IIS7 の既定のエラー メッセージを通過できます。1 つは、response.TrySkipIisCustomErrors = true を設定することです

response.TrySkipIisCustomErrors = true;
response.Status = response.Status;

response.Status を設定しないと、何らかの理由で TrySkipIisCustomErrors が受け入れられません。

もう 1 つは、web.config で existingResponse を「PassThrough」に設定することです。

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

ただし、これにより、設定されているすべての IIS カスタム エラー ページが無視されます。

于 2013-06-26T15:22:38.637 に答える