当响应通过任务 aync 重定向时,在客户端(浏览器)上看不到 await.Redirection。浏览器总是在等待响应。基本上我创建了一个自定义 HttpHandler ,它进一步返回 MVCHandler 因此它正在调用
IAsyncResult BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, object state)
我重写了这种重定向方法,但重定向正在通过另一个线程(或其他东西)。
protected override IAsyncResult BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, object state)
{
if (_hasPermission)
{
return base.BeginProcessRequest(httpContext, callback, state);
}
else
{
return DisplayError(httpContext.Response);
}
}
public async Task DisplayError(HttpResponse _response)
{
Task.Run(() =>
{
_response.RedirectToRoute("Unauthorized");
}).RunSynchronously();
}
我还尝试通过上面的编写和另一种方法使其同步。但仍然是同样的问题。有没有办法解决这个问题或阻止 MVCHandler 调用ProcessRequest
而不是BeginProcessRequest
方法?