.net core中的异常页很重要
因为可以查看异常的堆栈信息, 请求的参数(如果有),cookie, http头 帮助我们快速的定位问题
.net core web app 默认开启了异常页,但是仅在开发环境才开启.
代码中的位置在 startup.cs 里的configure 方法中
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
我们可以手动抛出一个异常看看,修改confgure方法:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} //使用fileServer代替 staticFiles 和defaultFiles
FileServerOptions fso = new FileServerOptions();
fso.DefaultFilesOptions.DefaultFileNames.Clear();
fso.DefaultFilesOptions.DefaultFileNames.Add("foo.html");
app.UseFileServer(); app.Run(async (context) =>
{
throw new Exception("手动 bug");
context.Response.Headers["Content-Type"] = "application/json";
await context.Response.WriteAsync("hello word");
});
}
这时我们 只要访问一个不存在的文件路径,跳过fileServier 使app.run里的代码被执行, 就会抛出 我刚才加的手动bug;
我们运行起来看看效果
可以看到 出现这个很重要的异常页了
而如果我们把 异常中间件注释掉
//if (env.IsDevelopment())
//{
// app.UseDeveloperExceptionPage();
//}
运行起来的异常效果
然后我们也可以 像defaultFile中间件那样, 设置它的opthin
设置一些 打印的堆栈长度 之类的可选项, 这里就不再演示了,有兴趣可以自行google