启动时显示自定义错误页面

时间:2017-06-05 08:31:30

标签: c# asp.net-core

在ASP.NET Core应用程序的启动阶段发生异常时,有没有办法显示自定义错误页面?例如,如果在Startup类的任何方法中发生异常(db is down等),例如Configure,ConfigureServices,Startup.Ctor等?

我认为使用以下代码对我没有帮助

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

由于尚未构建中间件pipline。这一行

app.UseExceptionHandler("/Home/Error");  
结果不执行

如果在此阶段发生错误,有没有办法显示自定义错误页面?

感谢
ashilon

2 个答案:

答案 0 :(得分:2)

Configure方法中,您正在配置HTTP管道以处理请求。由于应用程序启动时没有请求,因此永远不会执行管道。实际上,正如您所提到的,当您实际配置管道时可能会发生异常。

托管层提供了一种捕获启动错误并显示正确错误页面的方法。您可以使用CaptureStartupErrors(true)界面上的IWebHostBuilder。这是您配置应用程序托管层的位置,通常位于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();
}

答案 1 :(得分:-2)

对于一个简单的方法,您可以拥有一个包含警报的脚本块(&#34;您的错误消息&#34;)。如果您希望将弹出窗口设置为网站的其余部分,则可以将错误消息呈现为div元素并使用jQuery对话框将其显示为页面中的模式对话框,然后您只需将其放入代码:D,希望这有帮助!