[英]UseStatusCodePagesWithReExecute() not working on .NET Core 3.1
如果应用程序出现问题,我使用UseStatusCodePagesWithReExecute
将用户重定向到错误页面。
如果我的应用程序中出现错误,例如代码 500,我不会被重定向到“/Home/Error”。 如果我手动调用它“/Home/Error”就可以了!
这是我的代码,错误在哪里?
public IActionResult Error(string code)
{
return View(new ErrorModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier, ErrorStatusCode = code });
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSiteOfflineMiddleware();
app.UseStatusCodePagesWithReExecute("/Home/Error", "?code={0}");
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseSession(); // Aggiungi Supporto Sessioni
// Dependency Injection Option per leggere Localizzazione File Resources delle lingue
var localizationOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>().Value;
app.UseRequestLocalization(localizationOptions);
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "products",
pattern: "{codLanguage}/shop/{id}/{nameProduct}",
new { controller = "Catalog", action = "Detail" });
endpoints.MapControllerRoute(
name: "catalog",
pattern: "/shop",
new { controller = "Catalog", action = "Index" });
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
app.Run(async (context) =>
{
await Task.CompletedTask;
});
}
在问题中,正如 Tratcher 所提到的,UseStatusCodePagesWithReExecute 用于没有正文的状态代码响应(例如空 404)。对于 500 之类的代码,您可以使用 UseExceptionHandler。
如果要在状态码为 500 时重定向到 url "/Home/Error",可以这样做:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseExceptionHandler("/Home/Error");
app.UseStatusCodePagesWithReExecute("/Home/Error", "?code={0}");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.