302重定向很慢(IIS6)

时间:2013-12-09 09:52:00

标签: .net http redirect iis-6

我的网站有一个奇怪的行为:

当点击需要身份验证的页面时,我们会这样对待:

  • http模块检测到需要进行身份验证=>

返回状态401:

context.Response.StatusCode = 401;
// Prevents any other content from being sent to the browser
context.Response.SuppressContent = true;
// Directs the thread to finish, bypassing additional processing
context.ApplicationInstance.CompleteRequest();
  • 检测到重定向到auth表单,并对相应的登录表单进行重定向:

重定向代码:

context.Response.Redirect(url, false);
// Directs the thread to finish, bypassing additional processing
context.ApplicationInstance.CompleteRequest();

当在IIS7上运行具有此代码的站点时,未发现任何问题。但是使用IIS 6,登录表单需要2分钟才能加载(使用IE浏览器,Firefox,有时它适用于Chrome,但并非总是如此)。

使用fiddler时,我可以看到标题(302:重定向到最终登录表单)的速度非常快,但浏览器会等待“ServerDoneResponse”重定向,至少需要2分钟。

起初,没有CompleteRequest(),我认为添加它会解决问题,但事实并非如此。

有人对这个问题有任何想法吗?

提前致谢

编辑:在Windows 2003 R2 SP2上托管的网站上出现问题

编辑#2 :Fiddler提供的信息:

ClientConnected:    14:27:39.219
ClientBeginRequest: 14:27:39.297
GotRequestHeaders:  14:27:39.297
ClientDoneRequest:  14:27:39.297
Determine Gateway:  0ms
DNS Lookup:         0ms
TCP/IP Connect:     0ms
HTTPS Handshake:    0ms
ServerConnected:    14:27:39.250
FiddlerBeginRequest:14:27:39.297
ServerGotRequest:   14:27:39.297
ServerBeginResponse:14:27:39.328
GotResponseHeaders: 14:27:39.328
ServerDoneResponse: 14:29:48.867
ClientBeginResponse:14:29:48.867
ClientDoneResponse: 14:29:48.867

Overall Elapsed:    00:02:09.5694285

1 个答案:

答案 0 :(得分:1)

删除SuppressContent = true后,II6就没有问题了。