在 app.UseStatusCodePages 中访问 HttpContext

Lia*_*iam 4 .net asp.net-core asp.net-core-1.0

在我的startup.cs方法中public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)我想访问HttpContext.

我想要这样做的原因是我想将401 响应重定向到登录页面

app.UseStatusCodePages(async context => {
    var request = context.HttpContext.Request;
    var response = context.HttpContext.Response;

    if (response.StatusCode == (int)HttpStatusCode.Unauthorized)   
       // you may also check requests path to do this only for specific methods       
       // && request.Path.Value.StartsWith("/specificPath")

       {
           response.Redirect("/account/login");
       }
    });
Run Code Online (Sandbox Code Playgroud)

context在上面的例子中没有属性HttpContext。我如何访问HttpContext

Zel*_*ija 5

您正在尝试使用 UseStatusCodePages(此 IApplicationBuilder 应用程序,操作配置) 扩展方法重载。

您应该使用的是 UseStatusCodePages(this IApplicationBuilder app, Func<StatusCodeContext, Task> handler)。

像这样的东西:

app.UseStatusCodePages(context => {
    var request = context.HttpContext.Request;
    var response = context.HttpContext.Response;

    if (response.StatusCode == (int)HttpStatusCode.Unauthorized)
    {
        response.Redirect("/account/login");
    }

    return Task.CompletedTask;
});
Run Code Online (Sandbox Code Playgroud)