IIS上的Owin Web请求无限期挂起

Vid*_*sli 6 asp.net iis owin iis-8.5

我们在Win 2012 R2上的IIS 8.5上运行一个Owin应用程序,位于负载均衡器后面.一些网页,对某些网址的请求无限期挂起.如果用户在浏览器中选择取消,并重新加载页面,则一切正常,服务器响应迅速.

在IIS管理器中,我们可以看到请求挂起: 请求在IIS管理器中挂起 悬挂似乎发生在Owin管道内.我们运行的是.NET 4.5.2和最新的Owin软件包.

这是/api/whoami端点的代码:

[Authorize]
public class WhoAmIController : ApiController
{
    [Route("whoami")]
    [HttpGet]
    public IHttpActionResult Whoami()
    {
        return Json(ClaimsPrincipal.Current.Identity.Name);
    }
}
Run Code Online (Sandbox Code Playgroud)

观察到对此端点的请求AuthenticateRequest在IIS管道的阶段中挂起,而不是PreExecuteRequestHandlerOWIN管道的默认IIS阶段.我们唯一的身份验证方法是cookie身份验证,它在AuthenticateRequest阶段执行.

有任何想法吗?

编辑:调整截图

Vid*_*sli 1

问题是我们在 IIS 事件上执行代码PreSendRequestHeaders,根据 http://www.asp.net/aspnet/overview/web-development-best-practices/what-not-to-do-in ,这显然是不好的-aspnet,-and-what-to-do-instead#presend

我们的目的是在所有请求发出时调整 HTTP 标头。修复方法是将代码移至BeginRequest事件中。