通过任务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
方法?
在这种情况下,用于实现HTTP服务器代码(。NET / C#)的特定技术不会更改HTTP协议。
您可以更改服务器上的操作方式(async-await
),但不能破坏管道。