在Windows认证的asp.net MVC应用程序中,每个资源(2 × 401.2和1 × 200)有3个请求



我试图追踪为什么我的网站在IE9中如此缓慢,当我拔出Fiddler并意识到每个请求都被发送3次(两次我得到401.2,然后成功)。我验证了这种情况发生在所有浏览器上,只是Chrome的速度掩盖了这一点(或者这可能与我的网站在IE中的性能问题无关)。

我已经在我的开始/结束请求处理程序中设置了断点,并且请求进入了一个css文件。它没有经过身份验证,响应以401.2发出,我仔细检查了一下,我没有在任何地方设置响应状态,所以在begin_request和end_request之间的某个地方状态更改为401.2

注意:我有runAllManagedModulesForAllRequests=true所以我可以配置压缩,但是这个设置不影响这个(从我可以从提琴手看到的)。

我对kerberos/active directory一般来说非常无知,但我只是无法理解这是一个正常的握手协议,为每一个请求(也许是第一个?但不是全部)。

我已经搜索了谷歌,似乎没有什么帮助(添加/删除模块/身份验证提供者等)。我的意思是我的网站工作得很好,它只有一次你看引擎盖下,我看到重复的请求。注意:当我部署到生产环境时也会发生这种情况,所以这不是服务器特有的问题。

有人见过这个吗?

我认为这就是NTLM身份验证的工作方式。这里讨论这个过程。注意,您需要将AuthPersistSingleRequest设置为false以减少401的数量

最新更新