在我的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
?
您正在尝试使用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;
});
我有同样的问题。然后使用Microsoft.AspNetCore.Http添加;在https://github.com/aspnet/Docs/issues/8118上提到的我的代码之上的陈述。这解决了我的情况。