[.net core]11.异常页
.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