Azure 网站重定向循环

Posted

技术标签:

【中文标题】Azure 网站重定向循环【英文标题】:Azure website redirection loop 【发布时间】:2014-01-28 05:31:54 【问题描述】:

我有一个在 Windows Azure 网站上运行的 ASP.NET MVC 应用程序。

网站突然开始将主页 URL '/' 重定向到自身,从而导致重定向循环。事件发生时应用程序没有任何更改,日志文件不包含任何可疑信息 - 只是很多类似的请求

2014-01-09 09:00:05 SITE_NAME GET / X-ARR-LOG-ID=581f1d91-727a-4820-a7fa-7c21888b5813 80 - 193.85.68.249 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)+;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729) _ga=GA1.2.720579394.1386747761;+ARRAffinity=12ae470da6bd7ab5a7c446a8f29748ba5f73605e7fcd365292d61319cb67336f;+WAWebSiteSID=654ed6b99c9747759561e52c1f2cb0f8 - www.domain.cz 301 0 0 534 1069 31
2014-01-09 09:00:05 SITE_NAME GET / X-ARR-LOG-ID=3ddebc99-c083-4cbf-9bbe-90d755a8b1a0 80 - 193.85.68.249 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)+;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729) _ga=GA1.2.720579394.1386747761;+ARRAffinity=12ae470da6bd7ab5a7c446a8f29748ba5f73605e7fcd365292d61319cb67336f;+WAWebSiteSID=654ed6b99c9747759561e52c1f2cb0f8 - www.domain.cz 301 0 0 534 1073 0

当我重新启动 Azure 网站时,一切恢复正常。第三次出现同样的问题,所以它可能不仅仅是服务器的“打嗝”。

任何人都可以帮助我进行问题诊断吗?我有点迷茫,因为服务器日志和应用程序日志都没有包含任何有用的信息。

【问题讨论】:

您的应用程序中是否有任何自定义重定向代码?例如重定向到一个全小写的url? 过去几天在我们的一个网站上遇到了同样的问题。 @rich.okelly: 是的,web.config 中有一条重写规则将“domain.cz”重定向到“www.domain.cz” @LukasKabrt 这似乎是问题的可能原因(请参阅 Cort 回答中发布的链接)。看起来微软正在为他们的问题推出修复程序。与此同时,他们有一个明确的解决方法,即删除对站点根目录的任何重定向。如果这不是一个选项,则临时解决方法可能是创建一个执行相同操作的自定义 ActionFilter,只是在处理管道的不同部分(显然这不会像 IIS 中发生的重定向那样高效,但它就足够了短期内)。 【参考方案1】:

我意识到这是旧的。但在我的情况下,这是由于代码中的错误。

要显示真正的错误,我必须在 web.config 中进行更改

<customErrors mode="RemoteOnly" defaultRedirect="/Error/Index" />

到这里

<customErrors mode="Off" />

然后它告诉我

【讨论】:

【参考方案2】:

您可以使用 Application_BeginRequest 在非 www url 到 www url 之间进行全局路由。

 protected void Application_BeginRequest(Object sender, EventArgs e)
    
   if (!Request.Url.Host.StartsWith("www"))
   
      UriBuilder builder = new UriBuilder (Request.Url);
      builder.Host = "www." + Request.Url.Host;
      Response.Clear();
      Response.StatusCode = 301;
      Response.StatusDescription = "Moved Permanently";
      Response.AddHeader("Location", redirectUrl);
      Response.End();
   
 

【讨论】:

【参考方案3】:

在此处查看 Microsoft 对此有何评论:

http://social.msdn.microsoft.com/Forums/wpapps/en-US/ee3a5f97-8a58-4b42-a2d9-a73cd5d12c01/issues-with-redirect-rules-used-in-url-rewrite-feature?forum=windowsazurewebsitespreview

【讨论】:

以上是关于Azure 网站重定向循环的主要内容,如果未能解决你的问题,请参考以下文章

“此网页有一个重定向循环”(使用 GeoIP 重定向网站)

Azure OpenID Connect 通过 OWIN 中间件导致无限重定向循环

如何配置URL重定向在Azure中的DNS区域

当存在要注销的多个帐户时,使用 SimpleSAMLphp 注销到 Azure AD 中的指定网站后不会发生重定向

地理重定向上的无限循环

NGINX - 301/永久重定向(*.cloudapp.azure.com 到 domain.com)