【发布时间】:2020-07-10 13:27:12
【问题描述】:
我有以下情况:
- ASP.NET Core 2 在
/api/*上提供 api 请求 - ASP.NET Core 2 在
/health上服务健康请求 -
/svc/*上的 ASP.NET Core 2 服务器代理请求 - ASP.NET Core 2 在
/app或/上提供 SPA(如果您转到example.com,它将提供来自/app/文件夹的文件。
现在,如果有人请求一个不存在的实体,则会引发异常。这是通过在 Startup.cs 中使用以下内容处理的
app.UseExceptionHandler("/error");
ErrorController 处理这些异常并返回 NotFound()、BadRequest() 等内容。最终,它们都是 JSON 响应。
现在,如果您要转到 /hshfdhfgh 网址,现在会产生一个空的 404 页面,因为没有任何匹配项。但我想做的是能够为错误页面添加一些自定义 HTML 视图。也许使用 Razor Pages 或其他东西。
我已经查过了,建议您使用UseExceptionHandler("/error") 方法,这样您就可以返回一些视图。但这会与我的 JSON 响应冲突!
我唯一能想到的就是:
if request does not start with /health, /svc/, /, /app or /api/
app.UseExceptionHandler("/error/404");
else
app.UseExceptionHandler("/error");
但这感觉很hacky。有没有其他办法?
而且,为我的项目添加剃须刀支持的最佳/最简单的方法是什么?目前没有。
【问题讨论】:
-
你有两个选择:一个是使用异常处理程序和一个处理错误的自定义控制器。二是将任何你想要的东西直接写到响应中
-
如果是这样,我当然更喜欢选项 1。但是返回 404 JSON 和 404 HTML 有什么不同呢?
标签: c# asp.net asp.net-core