UseStatusCodePagesWithReExecute() 不适用于 .NET Core 3.1

2024-02-28

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(使用前将#替换为@)

UseStatusCodePagesWithReExecute() 不适用于 .NET Core 3.1 的相关文章

随机推荐