ASP.NET Core 3.0将HTTP 4XX和5XX请求重定向到自定义错误页面,同时保留错误代码

我希望将具有4XX或5XX错误代码的HTTP请求重定向到自定义错误页面,同时将错误代码保持在请求级别。我还想将异常重定向到错误代码为500的自定义错误页面。

对于我在启动文件中使用的 “ app.UseStatusCodePagesWithReExecute(” / error / {0}“)); app.UseExceptionHandler(“ / error / 500”);“ 与错误控制器关联。

关于异常的部分效果很好。 我还设法将不存在的路由重定向到我的自定义页面,同时保持404错误。

但是,我无法将以下操作重定向到我的自定义错误页面:

  • 返回NotFound()
  • 返回BadRequest()
  • 返回StatusCode(404)

将采用什么技术解决方案来实现这一目标?

这是我的启动文件的配置功能:

app.UseStatusCodePagesWithReExecute("/error/{0}");
app.UseExceptionHandler("/error/500");

app.UseHttpsRedirection();
app.UseStaticfiles();

app.UseRouting();

app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "Error-StatusCode-Route",pattern: "error/{statusCode}",defaults: new { controller = "Error",action = "InternalServerError" }
);

endpoints.MapControllerRoute(
        name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");
});
z332150607 回答:ASP.NET Core 3.0将HTTP 4XX和5XX请求重定向到自定义错误页面,同时保留错误代码

您可以定制中间件来处理它:

helloWORLD
<sqlite3.Cursor object at 0xb6314720>

对于您的ErrorController:

conn = sqlite3.connect ('login_test2.db')

c = conn.cursor ()

'''lists all passwords (pw) in users_tbl'''
pw_list = c.execute ("SELECT pw FROM users_tbl WHERE name='August Borne'")
for row in pw_list :
    print (row[0])

pw_august_borne = c.execute ('SELECT pw FROM users_tbl WHERE name="August Borne"')
print (pw_august_borne)

conn.close ()```

,

如果您使用的是core3,则这是一个已知的错误。此错误将在3.1中修复。 这是问题的链接:https://github.com/aspnet/AspNetCore/issues/13715

目前有一种解决方法。您可以在致电app.UseStatusCodePagesWithReExecute("/error/{0}");

后立即添加此代码
app.Use((context,next) =>
{
    context.SetEndpoint(null);
    return next();
});

当您从控制器操作返回NotFound或BadRequest时,这将呈现您的自定义页面。

本文链接:https://www.f2er.com/3145599.html

大家都在问