Asp.net mvc 4 Azure云服务将http重定向到https不工作(在许多链接上尝试了答案)

Asp.net mvc 4 Azure云服务将http重定向到https不工作(在许多链接上尝试了答案),asp.net-mvc-4,azure,azure-web-roles,iis-8,Asp.net Mvc 4,Azure,Azure Web Roles,Iis 8,我正在尝试将流量从http重定向/重写到https的“简单”任务,我在CloudService中有一个端点,该端点已正确配置为SSL 我尝试过许多IIS重写规则,如下面的规则,但没有一个有效。我还尝试过直接在IIS8服务器上通过远程桌面设置规则,但这也不起作用 当我在Azure web.config文件中输入任何标记时,重写标记下面有一条蓝线,并在下显示一条消息,表示该标记无效: <system.webServer> ... <rewrite>

我正在尝试将流量从http重定向/重写到https的“简单”任务,我在CloudService中有一个端点,该端点已正确配置为SSL

我尝试过许多IIS重写规则,如下面的规则,但没有一个有效。我还尝试过直接在IIS8服务器上通过远程桌面设置规则,但这也不起作用

当我在Azure web.config文件中输入任何标记时,重写标记下面有一条蓝线,并在
下显示一条消息,表示该标记无效:

<system.webServer>
...
      <rewrite>
          <rules>
              <rule name="RedirectToHTTPS" stopProcessing="true">
                  <match url="(.*)" />
                  <conditions>
                      <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                  </conditions>
                  <action type="Redirect" url="https://{SERVER_NAME}/{R:1}" redirectType="SeeOther" />
              </rule>
          </rules>
      </rewrite>

  </system.webServer>

...

非常感谢您的建议。

为了让这些规则发挥作用,您必须同时配置两个端点-HTTPHTTPS


如果您尚未在端口80上配置普通HTTP端点,则您的服务器将永远不会受到Internet流量的影响,因此将永远不会触发重写规则。因此,当您尝试通过普通HTTP打开域时,会出现超时。当您没有为端口80定义端点时,根本就没有进程侦听端口80。

既然云服务中只有一个端点正确配置为SSL,为什么还要为这样的URL重写操心呢?您的角色不可能从INTERNET获得普通HTTP流量,因为您的云服务只有HTTPS端点…当用户进入'sub.domain.com'时,他们会得到一个超时,当然,我的SSL可能没有正确设置-我的意思是,当在地址栏中指定https时,证书正在工作,并且看起来都很好。:)您需要为云服务同时设置HTTP和https端点,这样您的用户就不会得到超时和触发这些URL重写规则。未定义HTTP端点(80)时,HTTP端点(80)上可能会出现超时错误。流量击中Azure负载平衡器,永远无法进入您的角色…谢谢-我稍后可以尝试,现在您可以这么说:)