gpt4 book ai didi

c# - ASP.NET Core 3.1 中的自定义错误处理中间件?

转载 作者:行者123 更新时间:2023-12-03 22:56:22 24 4
gpt4 key购买 nike

我正在 ASP.NET Core 3.1 中开发一个项目。通过使用由 4 个不同层组成的干净架构,即持久性 - 域 - 应用程序 - Web。

在 Web 层,我有一个将使用 React 制作的管理区域,我还有一个将使用该管理区域的在线商店,但它将作为一个 html 在线商店而不使用 REST API。我的 REST API 路由是这样的:localhost:5001/api/v1/...

我想知道,当我的 REST API 服务和同时,当不使用 REST API 的 html 页面出现错误时,它将能够将它们作为 html View 发送。

最佳答案

一种方法是按路径区分请求。

在您的Configure 方法中:

app.UseWhen(o => !o.Request.Path.StartsWithSegments("/api", StringComparison.InvariantCultureIgnoreCase),
builder =>
{
builder.UseStatusCodePagesWithReExecute("/Error/{0}");
}
);

这假设您的 API Controller 标有 [ApiController] 属性,并且您至少使用 2.2 的兼容版本,它将呈现 JSON 问题详细信息 (RFC7807)。

编辑:无意中遗漏了 HTML 部分。您还需要一个 Controller 操作来路由错误代码以呈现 HTML 结果。有点像

[AllowAnonymous]
[Route("/Error/{code:int?}")]
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error(int? code)
{
ViewBag.Code = code.GetValueOrDefault(500);
return View();
}

和匹配的 Razor 页面,例如

    <h1>Error @(ViewBag.Code ?? 500)</h1>

关于c# - ASP.NET Core 3.1 中的自定义错误处理中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62192942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com