ASP.NET Core基础七

简介: ASP.NET Core (异常中间件) 了解异常中间件首先,使用ASP.NET模板创建一个核心应用程序。默认情况下,ASP.NET核心应用程序只是返回应用程序未处理的异常的状态代码。如下所示,我们引发异常。运行应用程序时,将得到以下输出。如上图所示,它为您提供的状态代码为 500,这意味着内部服务器错误。但是,作为开发人员,在开发应用程序时,您应该知道有关页面上异常的详细信息,以便可以采...

ASP.NET Core (异常中间件)

了解异常中间件

首先,使用ASP.NET模板创建一个核心应用程序。默认情况下,ASP.NET核心应用程序只是返回应用程序未处理的异常的状态代码。如下所示,我们引发异常。

image.png

运行应用程序时,将得到以下输出。

image.png

如上图所示,它为您提供的状态代码为 500,这意味着内部服务器错误。但是,作为开发人员,在开发应用程序时,您应该知道有关页面上异常的详细信息,以便可以采取必要的操作来修复错误。

如何使用异常中间件?

如果希望应用程序显示显示有关未处理异常的详细信息的页面,则需要在请求处理管道中配置开发人员异常页面中间件。为此,请修改Startup类的Configure 方法,如下所示,以添加开发人员异常页中间件,该中间件将处理应用程序中发生的未处理异常。

image.png

现在运行该应用程序,它将显示以下页面,其中包含有关未处理异常的详细信息。

image.png

如上图所示,“开发人员异常”页面包含五个选项卡,例如“堆栈”,“队列”,“ Cookie”,“标题”和“路由”。

1.堆栈:“堆栈”选项卡提供堆栈跟踪信息,该信息指示确切的异常发生位置,文件名以及导致异常的行号。
2.查询:“查询”选项卡提供有关查询字符串的信息。
3.Cookies:“ Cookies”选项卡显示有关请求设置的cookie的信息。
4.标头:“标头”选项卡提供有关标头的信息,该信息由客户端在发出请求时发送。
5.路由:“路由”选项卡提供有关方法的“路由模式”和“路由HTTP动词”类型等信息。

现在,如果您验证“查询”选项卡和“ Cookies”选项卡,那么您将看不到任何信息,因为您没有在URL中传递任何查询字符串值,或者未在请求中设置Cookie。

注意:仅当应用程序在开发环境中运行时,才应启用“开发人员异常页面中间件”。 当应用程序在生产环境中运行时,您不想共享详细的异常信息。

如何自定义UseDeveloperExceptionPage中间件?

如果需要,还可以自定义UseDeveloperExceptionPage中间件。 您需要记住的一点是,每当您要在ASP.NET Core中自定义中间件组件时,都需要使用相应的Options对象。 例如

1.UseDeveloperExceptionPage =>使用DeveloperExceptionPageOptions对象自定义此中间件
2.UseDefaultFiles =>使用DefaultFilesOptions对象来自定义此中间件
3.UseStaticFiles =>使用StaticFileOptions对象来自定义此中间件
4.UseFileServer =>使用FileServerOptions对象来自定义此中间件
由于我们将自定义UseDeveloperExceptionPage()中间件组件,因此我们需要使用DeveloperExceptionPageOptions对象。 因此,如下所示修改Startup类的Configure方法。

image.png

如您在上面的代码中看到的,我们正在使用一个名为SourceCodeLineCount的属性。 DeveloperExceptionPageOptions类的SourceCodeLineCount属性指定在导致异常的代码行之前和之后要包含的代码行数。

现在,如果在进行上述更改的情况下运行应用程序,则将出现以下错误。 请查看错误的行号,即37行。同时,请查看错误行之前和之后的行号。
image.png

在哪配置UseDeveloperExceptionPage中间件?

我们需要在应用程序的请求处理管道中尽早配置UseDeveloperExceptionPage()中间件,以便它可以处理未处理的异常,然后显示带有异常详细信息的Developer Exception Page。

让我们看看在导致异常的中间件之后配置UseDeveloperExceptionPage()中间件时发生了什么。 请如下所示修改Configure()方法。

image.png

完成上述更改后,当我们运行该应用程序时,它不会显示开发人员的异常页面,而只会返回默认的错误状态代码。 这就是为什么我们需要尽早配置UseDeveloperExceptionPage()中间件来处理请求处理管道中应用程序未处理的异常的原因。

目录
相关文章
|
26天前
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:<https://github.com/khellang/Scrutor>
41 5
|
2月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
47 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
1月前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
28 3
|
10天前
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
25 0
|
3月前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
开发框架 前端开发 .NET
ASP.NET Core 核心特性学习笔记「下」
ASP.NET Core 核心特性学习笔记「下」
|
开发框架 前端开发 中间件
ASP.NET Core 核心特性学习笔记「上」
ASP.NET Core 核心特性学习笔记「上」
|
SQL 机器学习/深度学习 Cloud Native
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 更新和迁移)--学习笔记
- 状态 - 自动变更检测 - 不查询删除和更新 - 并发
257 0
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 更新和迁移)--学习笔记
|
SQL Cloud Native 架构师
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 查询)--学习笔记
- 关联数据加载 - 客户端与服务端运算 - 跟踪与不跟踪 - 复杂查询运算 - 原生 SQL 查询 - 全局查询筛选器
251 0
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 查询)--学习笔记
|
Cloud Native 架构师