在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
答案 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,希望这有帮助!