1

このコードを考えてみましょう。

        protected void Application_Start()
        {
            InitLogger();

            InitAppContext();

            AreaRegistration.RegisterAllAreas();

            // WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();            
        }

InitLogger で例外が発生したとします。

これを処理するための 2 つの解決策があります。

  1. Application_Error イベントを使用して、リクエストを特定のページにリダイレクトします。このアプローチを試すと、Request is not available in this context
  2. を使用し<customErrors mode="On" defaultRedirect="Error.html" />ます。私が彼を試してみると、私は得ますhttp://localhost:1937/Error.html?aspxerrorpath=/

説明されている状況をどのように処理しますか?

ありがとう。

PS: コントローラーの例外 (http の例外とカスタムの例外) を処理するために、フィルターを使用しました。その部分は完了です。

4

1 に答える 1

2

どちらのソリューションも、リクエストを別の場所にリダイレクトすることについて話しています。ただし、アプリケーションの起動時に例外が発生しているため、まだリクエストはありません。

InitLogger() が例外をスローできる場合は、呼び出しを try/catch ブロックでラップします。何らかの方法で例外を処理できる場合 (たとえば、代わりに試すことができる 2 番目のロガーがある場合や、ロガーなしでアプリケーションを実行できる場合など)、先に進んで処理してください。それができない場合は、アプリケーションは機能しません。オンザフライで修正できないため、どこかで問題が発生したことを記録する必要があります (後で調査するのに役立ちます)。たとえば、エラーをイベント ログに書き込むことができますが、例外をキャッチしなければ自動的に発生することに注意してください。

于 2013-06-21T13:30:50.593 に答える