【问题标题】:Azure website redirection loopAzure 网站重定向循环
【发布时间】: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 中发生的重定向那样高效,但它就足够了短期内)。

标签: asp.net-mvc azure web http-redirect


【解决方案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】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      相关资源
      最近更新 更多