- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人可以确认 app.UseExceptionHandler()
不适用于服务器端 blazor 吗?
我见过几个案例,我的自定义 ErrorHandler
没有捕获我的应用程序抛出的异常。示例代码
Startup.cs
:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider)
{
...
app.UseExceptionHandler(new ExceptionHandlerOptions { ExceptionHandler = ErrorHandler.HandleError });
...
}
ErrorHandler.cs
:
public static async Task HandleError(HttpContext context)
{
var error = context.Features.Get<IExceptionHandlerFeature>()?.Error;
var message = error?.Message ?? "[EXCEPTION NOT FOUND]";
return;
}
例如,当我的存储库抛出这样的异常时:无法跟踪实体类型的实例,因为已跟踪具有相同键值 {'Id'} 的另一个实例
我的 MVC 解决方案捕获所有异常,并且使用类似的 ErrorHandling 实现。
最佳答案
事实上,许多 ASP Core 中间件方案无法在服务器端 Blazor 应用程序中完全运行。这是因为 Blazor 与 SignalR 和 Blazor Hub 配合使用。
您会看到,在启动 Blazor 应用程序时,首先会有一些 HTTP 请求通过管道直到结束。 (在大多数情况下,这些是初始页面加载,然后是协商阶段)。但是随后出现了对“/_blazor”的请求,此时连接保持打开状态以继续通过 websockets 进行通信。如果在此阶段之后出现异常,它将不会进入您的异常处理程序。
您可以通过创建一个小型中间件类来观察这一点,该中间件类通过 IApplicationBuilder 上的 UseMiddleware 扩展方法注册。这样的中间件类需要一个 Invoke 方法,例如:
.....
public class TestMiddleware
{
private readonly RequestDelegate _next;
public TestMiddleware(RequestDelegate next)
{
_next = next
}
public async Task Invoke(HttpContext context)
{
await _next(context);
}
....
如果您在 Invoke 中放置一个断点,您会注意到一旦上下文参数用于路径“/_blazor”,您将不会再进一步。
这是另一个讨论类似问题的链接,它不同于异常处理程序,但也与 ASP.NET 中间件相关: https://github.com/aspnet/SignalR/issues/1334
关于c# - UseExceptionHandler Blazor 服务器端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59983578/
我创建了一个简单的 webapi .net core 3.1 应用。 我想捕获所有未处理的异常。所以我根据 docs 放置这段代码: app.UseExceptionHandler(c => c.Ru
有人可以确认 app.UseExceptionHandler() 不适用于服务器端 blazor 吗? 我见过几个案例,我的自定义 ErrorHandler 没有捕获我的应用程序抛出的异常。示例代码
我一直在阅读 ASP.NET Core 中的错误处理,我遇到了这两种方式: UseExceptionHandler("/error") UseStatusCodePagesWithRedirects(
我想在出现未处理的异常时显示开发人员异常页面,但我也想向其中添加日志记录。但是当我使用 app.UseDeveloperExceptionPage连同app.UseExceptionHandler ,
在我的 ASP.NET Core 3.1 应用程序中,Startup 类中有这样的代码: public void Configure(IApplicationBuilder app, IWebHost
构建 ASP.Net Core (V2) MVC 站点。 我们为此使用 API 版本。 该网站有 Controller 提供 MVC Razor View 以及 API 样式的 Json 响应。 我正
在 .NET Core 应用程序的 Startup.cs 文件中,默认情况下它使用 public void Configure(IApplicationBuilder app, IHostin
在我的 .Net Core 2.0 应用程序中,我实现了 UseExceptionHandler 来全局处理异常。但重定向仅适用于 GET 方法和 POST 方法总是返回 Status Code: 4
我创建了一个简单的主页/错误页面,我可以毫无问题地直接访问它。它现在只返回一些静态 HTML。当我将 Startup.cs 更改为: public void Configure(IApplic
我有一个 ASP.Net Core 2 web api 项目。 我已将以下内容添加到 Configure我的 Startup.cs 文件中的方法app.UseExceptionHandler(); 我
我想返回有关错误的具体 json 信息。 我有自定义中间件的解决方案,但我不明白如何使用标准 ExceptionHandler 选项执行相同的操作: 我正在尝试: app.UseExceptionHa
我是一名优秀的程序员,十分优秀!