2017-06-05 11 views
2

ASP.NETコアアプリケーションの起動段階で例外が発生したときにカスタムエラーページを表示する方法はありますか?たとえば、Startupクラスのメソッド(Configure、ConfigureServices、Startup.Ctorなど)のいずれかで例外(dbがダウンしているなど)が発生した場合は、
私は、次のコードを使用すると、ミドルウェアpiplineがまだ構築されていないとして、私に起動時にカスタムエラーページを表示する

if (env.IsDevelopment()) 
{ 
    app.UseDeveloperExceptionPage(); 
    app.UseStatusCodePages(); 
    app.UseBrowserLink(); 
} 
else 
{ 
    app.UseExceptionHandler("/Home/Error"); 
} 

を支援するつもりはないと思われます。したがって、行は

app.UseExceptionHandler("/Home/Error"); 

は実行されません。
この段階でエラーが発生した場合、カスタムエラーページを表示する方法はありますか?単純なアプローチのために

おかげ

+0

OK、それについてはわかりません。ありがとう – ashilon

答えて

1

Configureメソッドでは、要求を処理するためにHTTPパイプラインを設定しています。アプリケーションの起動時に要求がないため、パイプラインは決して実行されません。実際、あなたが言及したように、実際にパイプラインを設定しているときに例外が発生する可能性があります。

ホスティングレイヤーは、スタートアップエラーをキャプチャし、まともなエラーページを表示する方法を提供します。 IWebHostBuilderインターフェイスでCaptureStartupErrors(true)を使用できます。これはアプリケーションのホスティングレイヤーを設定する場所で、通常はPogram.csにあります。たとえば、

public static void Main(string[] args) 
{ 
    var host = new WebHostBuilder() 
     .UseKestrel() 
     .UseContentRoot(Directory.GetCurrentDirectory()) 
     .UseIISIntegration() 
     .UseStartup<Startup>() 
     .UseApplicationInsights() 
     .CaptureStartupErrors(captureStartupErrors: true) // Add this line 
     .Build(); 

    host.Run(); 
} 
+0

優れています。非常に役立ちます。ヘンクに感謝します。 – ashilon

-2

ashilonは、アラート(「エラー・メッセージ」)を含むスクリプトブロックを持つことができます。ポップアップをあなたのウェブサイトの残りの部分としてスタイル化したい場合は、エラーメッセージをdiv要素にレンダリングし、jQueryダイアログを使用してページ内のモーダルダイアログとして表示することができます。コード:D、これが役立つことを願っています!

+1

私はこれが質問に答えるとは思わない。私はAshilonがエラーを処理するために、またはMVCのように 'OnException'をオーバーライドするために、' Globals.asax'と同等の.coreを参照していると思いますか? –

+0

私はHoracioに申し訳ありませんが、Daniel Shillocockは正しいです。私はここではASP.NET Coreについて話しています.Danielのように、MVCのGloabl.asaxやOnExceptionに似たものがあります。説明されたシーンがアプリケーションの起動プロセスの早い段階で発生するだけであるため、ミドルウェアインフラストラクチャはまだ存在しません。とにかく、ありがとう。 – ashilon

+0

これは、答えではなくあいまいな説明です。 [良い答えを書くにはどうすればいいですか?](https://stackoverflow.com/help/how-to-answer) – Liam

関連する問題