0

ノート

以下で説明している問題は、ファイルで指定された DLL ファイルの読み込み中に発生したエラーに固有のものであると判断しましたweb.config。エラーの場合でもユーザーフレンドリーなエラーを提示したいと思いますweb.config

エンドノート

ASP.Net アプリケーションでサーバー エラーが発生した場合、次のデフォルトの怖いメッセージではなく、カスタム エラー メッセージをユーザーに表示したいと考えています。

Server Error in '/' Application.

Runtime Error

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine. 

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".


<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.


<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration>

非常に単純な HTML ページを作成し、アプリケーションのルートに配置しました。これは、MaintenancePage.htm と呼ばれます。

web.config ファイルを次のように設定しました。

<customErrors mode="RemoteOnly" defaultRedirect="MaintenancePage.htm">
  <error statusCode="404" redirect="PageNotFound.aspx" />
</customErrors>

私も試し~/MaintenancePage.htmてみましhttp://[mysite]/MaintenancePage.htmた。これらのオプションはどれも機能していないようです。

私がこれをテストしている方法は、私のプロジェクトが依存している DLL の名前を変更し、Web ブラウザーでサイトをロードすることです。エラーとdefaultRedirectセットがあるので、エラー ページの表示に問題はないはずですが、明らかに間違っています。

この問題について調べてみたところ、ほとんどの人がページにリダイレクトしようとaspxしていて、それを行う際にエラーが発生しているようです。多くの人は、ページを としてロードすることはできませんが、aspxページをロードすることはできると報告しています。defaultRedirecthtml

ここで何が間違っているのでしょうか?

会社のファイアウォールの外側にある別のネットワークからテストを行っていることに注意してください。ドキュメントによると、変更は問題ではありませんRemoteOnlyOnテストでは、予想どおり、 に変更RemoteOnlyOnても効果はありませんでした。

4

1 に答える 1

2

RemoteOnlyOnに変更します。

リモートのみ:

カスタム エラーはリモート クライアントにのみ 表示され、 ASP.NET エラーはローカル ホストに表示されるように指定します。

また、URL は絶対または相対の場合があります。

customErrors 設定の詳細を読む

ローカルでの動作を確認するには:

<customErrors mode="On" defaultRedirect="/MaintenancePage.htm">
  <error statusCode="404" redirect="/PageNotFound.aspx" />
</customErrors>

テストするより簡単な方法。

  1. 悪い URL を試して、404 エラーが引き継がれるのを確認してください
  2. これを default.aspx ページに配置します<% throw new Exception("gaah"); %>

考慮すべきもう 1 つの点は、エラー ログです。ELMAHを通じて簡単に実現できます。

于 2012-11-20T22:43:43.893 に答える