我正在尝试在 ASP.NET Razor Pages (.Net 8.0) 中实现以下自定义错误页面:
- 403 禁止
- 404 未找到
- 500 服务器错误
Error
我的错误页面是位于名为目录的目录中的 RazorPages 页面Pages
。后面的模型代码只有一个空的构造函数。
应用程序配置如下:
使用下面的补充方法,允许在上下文未完全启动时显示 403。如果没有这个,标准的 ASPNet 403 页面将显示未经授权的页面请求。
我所理解的设置顺序非常关键,这是我从 MSDN 和各种 Stack Overflow 帖子和解决方案中收集到的。
403和 404页面重定向并完美显示。无论我尝试了各种 Stack Overflow “已接受” 解决方案中的哪种方法,500 页面都无法重定向。我只得到标准的 ASP.Net 500 页面。
编辑1:
- 我正在使用 ASPNetCore.App 8.0.11
- 500 错误是由于在页面代码后面的操作
new NotImplementedException()
中抛出一个而触发的。OnGetAsync()
- 我已
app.Environment.IsDevelopment
禁用该开关,因此它将UseExceptionHandler("/Error");
代替DeveloperExceptionPage。
编辑2:
白兰度建议我使用app.UseExceptionHandler("/Error/500");
,app.UseExceptionHandler("/Error");
我尝试如下方法...
//if (app.Environment.IsDevelopment())
//{
// app.UseDeveloperExceptionPage();
//}
//else
//{
//app.UseExceptionHandler("/Error");
app.UseExceptionHandler("/Error/500");
app.UseHsts();
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
//}
...但是,我仍然没有点击我的自定义错误页面。
我还遗漏了什么吗?
编辑3:
TLDR; Brando 建议的修复确实解决了该问题。谢谢 Brando。
app.UseDeveloperExceptionPage();
详细信息:我意识到我的 底部有一个随机静止图像WebApplicationConfiguration.cs
。删除后,在我的原始代码和 Brando 的代码之间切换可能会引入/修复该错误,正如 Brando 所述。Brando 的建议解决了这个问题。
任何帮助均感激不尽。
根据您的代码,我仍然发现您在 UseExceptionHandler 方法中使用了以前的错误路径,但 500 页的路径应该是 error/500
我建议您尝试一下这个来测试是否会使用新的错误页面:
结果:
小路: