ASP.NET Core 开发人员异常页面
Posted lonelyxmas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET Core 开发人员异常页面相关的知识,希望对你有一定的参考价值。
原文:ASP.NET Core 开发人员异常页面
UseDeveloperExceptionPage 中间件
我们谈谈在 Startup 类的 Configure()方法中以下代码:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
app.UseFileServer();
app.Run(async (context) =>
throw new Exception("您的请求在管道中发生了一些异常,请检查。");
await context.Response.WriteAsync("Hello World!");
);
如果我们使用上面的代码运行我们的应用程序,我们看不到异常,而是看到“来自 Default.html 页面中的 Hello”。如果您了解 asp.net Core 请求处理管道的工作原理,那么您可能已经知道我们没有看到我们抛出的异常的原因。
UseFileServer
中间件结合了UseDefaultFiles
和UseStaticFiles
中间件的功能。在我们之前的系列视频中,我们在 wwwroot 文件夹中包含了一个名为default.html
的默认 html 文档。
因此,对应用程序根 URL 的请求即http://localhost:49119
由UseFileServer
处理中间件和管道从那里反转。因此,在我们Run()
方法注册的请求管道中的下一个中间件也无法执行,因此我们不会看到此中间件抛出的异常。
现在,如果我们向http://localhost:49119/abc.html
发出请求,我们会看到异常。因为,在这种情况下,UseFileServer
中间件找不到名为abc.html
的文件。 它会继续去调用管道中的下一个中间件,在我们的例子中是我们使用Run()
方法注册的中间件。此中间件抛出异常,我们按预期看到异常详细信息。
如果您对传统的 asp.net 有任何经验,那么您必须非常熟悉此页面。这类似于传统的 asp.net 中的黄色死亡屏幕。
此Developer Exception
页面包含异常详细信息 :
- 堆栈跟踪,包括导致异常的文件名和行号
- Query String, Cookies 和 HTTP headers
目前,在异常页面的“Query ”选项卡上,我们看到“无 QueryString 数据”。如果请求 URL 中有任何查询字符串参数,如下所示,您将在“Query ”选项卡下看到它们。
http://localhost:48118/abc.html?country=person&state=islocked
自定义 UseDeveloperExceptionPage 中间件
与 ASP.NET Core 中的大多数其他中间件组件一样,我们也可以自定义UseDeveloperExceptionPage
中间件。每当您想要自定义中间件组件时,请始终记住您可能拥有相应的OPTIONS对象
。那么,要自定义UseDeveloperExceptionPage
中间件,
DeveloperExceptionPageOptions developerExceptionPageOptions = new DeveloperExceptionPageOptions
SourceCodeLineCount = 10
;
app.UseDeveloperExceptionPage(developerExceptionPageOptions);
SourceCodeLineCount
属性指定在导致异常的代码行之前和之后要包含的代码行数。
UseDeveloperExceptionPage 中间件如何工作
UseDeveloperExceptionPage
中间件的位置尽可能的放置在其他中间件的位置前面,因为如果管道中的后面的中间件组件引发异常,它可以处理异常并显示Developer Exception
页面。请参考以下代码:使用 Run()注册的中间件后出现UseDeveloperExceptionPage()
中间件方法。因此,在这种情况下,将不会显示开发人员异常页面。这就是它必须尽早的放置在请求处理管道的原因。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
//app.UseFileServer();
app.Run(async (context) =>
throw new Exception("Some error processing the request");
await context.Response.WriteAsync("Hello World!");
);
if (env.IsDevelopment())
DeveloperExceptionPageOptions developerExceptionPageOptions = new DeveloperExceptionPageOptions
SourceCodeLineCount = 10
;
app.UseDeveloperExceptionPage(developerExceptionPageOptions);
欢迎添加个人微信号:Like若所思。
欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!
以上是关于ASP.NET Core 开发人员异常页面的主要内容,如果未能解决你的问题,请参考以下文章
为啥 asp.net 5 剃须刀页面中没有开发人员异常页面?
如何在ASP.Net Core的生产环境中保护swagger ui