在自定义HttpHandler ASP.Net MVC 5中异步重定向响应

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

通过任务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方法?

c# asynchronous asp.net-mvc-5 async-await mvcroutehandler
1个回答
0
投票

在这种情况下,用于实现HTTP服务器代码(。NET / C#)的特定技术不会更改HTTP协议。

您可以更改服务器上的操作方式(async-await),但不能破坏管道。

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