c# - 如何在特定的 Http 错误状态下重定向到视图而不是 UseDeveloperExceptionPage
问题描述
我有一个 .NET Core MVC 环境。当服务器出现 403 错误时,我想管理登录例程。
我目前在我的 Startup.cs 文件中使用此配置:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error/500");
app.UseHsts();
}
但我想要类似的东西:
if (env.IsDevelopment())
{
if ( error === 403 )
app.UseExceptionHandler("/Home/MyCustomError");
else
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error/500");
app.UseHsts();
}
我该如何处理?
在这两种情况下,我都试图用 app.UseExceptionHandler 来解释微软的解释。这样,我想做我想做的事,如果错误不是 403 则显示错误,如果是则返回登录视图。这个解决方案的问题是显示的错误不是一个很好的调试页面,比如 app.UseDeveloperExceptionPage 渲染。
解决方案
您可以尝试使用UseStatusCodePagesWithReExecute。这是一个演示(我用 404 测试,您也可以在演示中将其他状态码错误页面添加到 Error 文件夹):
启动:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseStatusCodePagesWithReExecute("/StatusCode", "?code={0}");
状态码控制器:
public class StatusCodeController : Controller
{
public IActionResult Index(string code)
{
if (string.IsNullOrEmpty(code))
{
code = "Unknown.cshtml";
}
return View($"/Views/Shared/Error/{code}.cshtml");
}
}
错误文件夹:
404.cshtml:
<h1>404</h1>
你也可以试试UseStatusCodePagesWithRedirects
。
推荐阅读
- azure - Importing Function App in to API Management via Powershell
- testcase - 测试计划 - 寻找单个测试的实例
- bash - Sed - Mac OSX 上多个文件的更改
- angular - RXJS 避免嵌套多个订阅
- sql - SQL - 确定合同变更前后合同期的月数
- pandas - 将 pandas 数据帧中的 numpy 数组加载到 tensorflow 数据集中
- python - 我在 IBM Watson 工作室有一个使用 jupyter notebook 的项目
- mysql - 使用映射表连接多个列
- c# - Topshelf vs .net core worker 服务
- powershell - 如果正确,如何执行?