302无限循环

时间:2012-07-02 14:49:02

标签: asp.net iis-7 infinite-loop http-status-code-302

我有一个陷入无限循环的Web应用程序,我不知道接下来要去哪里看。这是一个内部网站点,所以没有我可以分享的链接,但我已经列出了我能想到的许多细节。我将不胜感激任何想法或建议。任何人都有。

细节:

  • IIS 7
  • .Net 4.0
  • Windows 2008
  • 默认文档为Login.aspx
  • 在app上没有设置HTTP重定向,在IIS中没有设置Login.aspx
  • Fiddler使用状态代码302显示Login.aspx并重定向到Login.aspx

如果我打开我的网站,它会指向Login.aspx并陷入302循环。如果我打开网站但指向register.aspx,Fiddler会将register.aspx显示为Login.aspx,当然会重定向到Login.aspx。

我做了什么:

  • 从Visual Studio运行webapp - 一切正常
  • 检查web.config是否有重定向命令 - 没有
  • 检查IIS是否有重定向命令 - 没有
  • 看看Fiddler在循环中的另一个页面 - 没有,只​​有Login.aspx到Login.aspx
  • 检查Login.aspx是否有重定向命令 - 没有
  • 检查重定向命令后面的Login.aspx代码 - 没有
  • 使用服务器上的web.config在我的盒子上运行应用程序 - 一切正常
  • 检查Login.aspx是否有重定向命令 - 没有
  • 清除缓存 - 问题仍然存在
  • 重新发布 - 问题仍然存在
  • 重新发布并清除缓存 - 问题仍然存在
  • IIS中的已禁用默认文档

3 个答案:

答案 0 :(得分:3)

如果这是一个答案,请分享这个,因为这听起来像是我们遇到的问题。

  1. 我们的登录操作中包含[RequiresHttps]属性的ASP.net MVC网站。

  2. 在负载平衡器后面进行SSL加速(导致实际命中服务器端代码的请求已经解码并且在http下有效)。

  3. 服务器代码认为这是一个问题,并使用https重定向回自身。

  4. 冲洗并重复。

答案 1 :(得分:2)

发现问题。在MasterPage中找到了这个逻辑:

Dim strPage As String = Request.Url.AbsolutePath.Replace("/", "")
    'Check that user is logged in
    If Not strPage = "Login.aspx" And Not strPage = "Register.aspx" Then
        If Session("intUserId") Is Nothing Then
            Response.Redirect("~/Login.aspx", True)
        End If
    End If

显然,在浏览服务器上的Login.aspx时,strPage不等于Login.aspx。

当我调查时,我应该知道这一点。感谢Ross的评论,它帮助我找到了这个!

答案 2 :(得分:1)

我遇到过类似的错误。但我的错误是两个 Response.Redirect 背靠背。

If (conditon1){
    Response.Redirect("Page1.aspx");
}
If (conditon2){
    Response.Redirect("Page2.aspx");
}

修复方法是将 if 放在 else 块中。