首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >302无限环

302无限环
EN

Stack Overflow用户
提问于 2012-07-02 14:49:02
回答 3查看 9.2K关注 0票数 6

我有一个被困在无限循环中的web应用程序,我不知道下一步该在哪里查找。这是一个内联网网站,所以没有链接我可以分享,但我列出了尽可能多的细节,我可以想到下面。如有任何意见或建议,我将不胜感激。任何人都有。

详情如下:

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

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

我所做的:

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

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-02 15:27:54

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

代码语言:javascript
复制
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

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

我在调查的时候应该知道这件事的。谢谢罗斯的评论,它帮助我找到了这个!

票数 2
EN

Stack Overflow用户

发布于 2012-07-02 14:55:55

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

  1. ASP.net MVC站点上带有[RequiresHttps]属性的登录操作。

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

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

  1. 冲洗并重复。

自从回答这个问题已经有很长一段时间了,我下面关于“不使用RequireHttps”的评论可能有点过时了。

任何看到这个答案并认为它解决了他们的问题的人都应该考虑配置他们的负载均衡器来使用X转发-Proto报头:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto

然后设置它们的MVC站点,以便能够读取这些内容,并且仍然认为它们位于您环境的边界HTTPS之下:

https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-6.0

票数 5
EN

Stack Overflow用户

发布于 2017-06-30 22:42:01

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

代码语言:javascript
复制
If (conditon1){
    Response.Redirect("Page1.aspx");
}
If (conditon2){
    Response.Redirect("Page2.aspx");
}

解决方法是简单地把另一个放在else块中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11296032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档