ASP.NET Core – Handle Error on Razor Page
前言
网站不应该有 error, 但它却必然会发生的, 所以给用户一个友好的 error 页面是很重要的.
主要参考
Development 期的错误处理
在 dev 的时候, ASP.NET Core 已经替我们做好了一个错误页面, 对开发人员很友好的.
我们不需要做任何设置.
Production 期的错误处理
if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/InternalServerError"); }
UseExceptionHandler 会通过 path /InternalServerError 找到对应的 razor page 渲染返回内容.
在 Model 我们可以通过 request features 拿到相关的 exception information
public void OnGet() { var exceptionHandlerPathFeature = HttpContext.Features.Get<IExceptionHandlerPathFeature>(); RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; }
404 页面
404 不算 Exception, 所以上面的方案是不会处理 404 的.
app.UseStatusCodePagesWithReExecute("/Status/{0}");
通过 UseStatusCodePagesWithReExecute 就可以解决 404 的问题了. 它的执行和 Exception handler 类似.
依据 path 找到 page 然后渲染返回, 同样在 Model 可以拿到 status 的 information.
public void OnGet(string statusCode) { var exceptionHandlerPathFeature = HttpContext.Features.Get<IStatusCodeReExecuteFeature>(); RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期