【问题标题】:How to pass parameter to global error controller?如何将参数传递给全局错误控制器?
【发布时间】:2021-05-05 20:04:55
【问题描述】:

我正在使用全局错误控制器来处理我的 ASP.NET Core MVC 应用程序中的错误请求。

我有

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

在我的 Startup.cs 和 ErrorController 中这样的操作

        [Route("Error/{statusCode}")]
        public IActionResult HttpStatusCodeHandler(int statusCode)
        {
            var feature = HttpContext.Features.Get<IStatusCodeReExecuteFeature>();
            ViewData["ErrorPathBase"] = feature?.OriginalPath;
            ViewData["ErrorQuerystring"] = feature?.OriginalQueryString;

            _logger
                .ForContext("OriginalPath", feature?.OriginalPath)
                .ForContext("OriginalQueryString", feature?.OriginalQueryString)
                .Warning($"User has reached {statusCode} page.");

            switch (statusCode)
            {
                case 404: return PartialView("_BadRequest");
                case 400: return PartialView("_BadRequest");
                case 403: return PartialView("_AccessDenied");
                default: return PartialView("_BadRequest");
            }
        }

每次回来

return NotFound();

在我的应用程序中,调用了 ErrorController。我怎样才能传递一些额外的参数来返回 NotFound 像这样

return NotFound("returnUrl"});

仍然点击 HttpStatusCodeHandler 操作?

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc


    【解决方案1】:

    您可以为此使用HttpContext.Items

    HttpContext.Items["SomeItem"] = "Some value";
    return NotFound();
    

    错误控制器

    [Route("Error/{statusCode}")]
    public IActionResult HttpStatusCodeHandler(int statusCode)
    {
        object someItem = HttpContext.Items["SomeItem"];
        //...
    }
    

    【讨论】:

      猜你喜欢
      • 2018-07-14
      • 1970-01-01
      • 2022-10-31
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多