如何解决重定向循环

我有一个Web应用程序,并且一些使用Chrome作为首选浏览器的用户在退出应用程序时会出现以下错误,并尝试重新登录。

“此网页有重定向循环”。

我的Web应用程序使用表单身份validation, FormAuthenticationModule将用户重定向回我的应用程序的登录页面,因此我无法使用此方法:

    

相反,我已将以下内容添加到LoginPagePage_Load事件中。

 if (Request.IsAuthenticated && !string.IsNullOrEmpty(Request.QueryString["ReturnUrl"])) { Response.Redirect("~/NoAccess.aspx"); } 

但是,由于我添加了这种方法,用户似乎得到了“重定向循环”错误。

清除cookie后,一切似乎都很好,但问题确实再次发生。

是否有永久性修复,我可以添加到我的代码,或者我还能做些什么来防止这个问题发生?

尝试将此添加到您的web.config文件中:

          

这将关闭此页面的任何授权,并应停止循环。

你也可以添加这个:

          

这将拒绝对已经过身份validation的所有用户访问您的登录页面。 将这两者结合起来应该允许您为所有重定向添加自定义错误。

您还可以考虑创建一个用于未经授权访问的目录(例如public/ )并放入所有错误页面(不需要授权)。 然后你可以这样做:

          

您可以在此处详细了解位置。 更多关于授权的信息 。

有一个非常类似的问题,并在IIS中解决它:在Authenticationfunction启用Anonymous Authentication并禁用其他所有。 这是有道理的,因为最终这是管理身份validation逻辑而不是IIS或ASP.NET的应用程序。 但显然这个解决方案不支持@Grzegorz建议的优雅访问公共页面。

我还有一个重定向循环导致错误消息The request filtering module is configured to deny a request where the query string is too long. 对于Visual Studio 2013网站,其中身份validation设置为单个用户帐户。

请求的URL是http://localhost:52266/Account/Login?ReturnUrl=%2FAccount%2FLogin%3FReturnUrl%3D%252FAccount%252FLogin%253FReturnUrl....的长版本http://localhost:52266/Account/Login?ReturnUrl=%2FAccount%2FLogin%3FReturnUrl%3D%252FAccount%252FLogin%253FReturnUrl....所以它显然不断重定向到登录页面并且每次附加返回URL。

试图找到有问题的循环似乎没有任何断点,因为没有触发。

最后我做了以下事情 :

  • 找到项目属性。 通过选择项目(不是解决方案)并查看“属性”窗口(不要右键单击然后选择“属性”,否则您将找不到它)来执行此操作。
  • Anonymous Authentication设置为已Enabled
  • Windows Authentication设置为Disabled

启动项目时,现在应该显示默认页面,并且您添加的断点应该开始工作。

这是一篇旧post,我在自定义身份validation和validation时遇到了这个问题。 通过在web.config中添加这行代码解决了这个问题

              

希望能帮助到你。