在app.UseStatusCodePages中访问HttpContext

问题描述 投票:1回答:2

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

我想这样做的原因是我想重定向401 response to a login page

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");
       }
    });

上例中的context没有HttpContext属性。我怎样才能访问HttpContext

.net asp.net-core asp.net-core-1.0
2个回答
1
投票

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

你应该使用的是UseStatusCodePages(这个IApplicationBuilder应用程序,Func <StatusCodeContext,Task>处理程序)。

像这样的东西:

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;
});

-1
投票

我有同样的问题。然后使用Microsoft.AspNetCore.Http添加;在https://github.com/aspnet/Docs/issues/8118上提到的我的代码之上的陈述。这解决了我的情况。

© www.soinside.com 2019 - 2024. All rights reserved.