繁体   English   中英

UseStatusCodePagesWithReExecute() 在 .NET Core 3.1 上不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM