I use 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;
});
}
In the issue https://github.com/aspnet/Mvc/issues/6717正如Tratcher提到的,UseStatusCodePagesWithReExecute适用于没有主体的状态代码响应(例如空404)。而对于像500这样的代码,您可以使用UseExceptionHandler。
如果你想在状态码为500时重定向到“/Home/Error”,你可以这样做:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseExceptionHandler("/Home/Error");
app.UseStatusCodePagesWithReExecute("/Home/Error", "?code={0}");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)