我的Azure Cloud Service设置如下:
<Sites>
<Site name="Web" physicalDirectory="../SampleWebsite/">
<Bindings>
<Binding name="HttpIn" endpointName="HttpIn" />
</Bindings>
</Site>
<Site name="Admin" physicalDirectory="../SampleWebsite/Admin">
<VirtualApplication name="Admin" physicalDirectory="../SampleWebsite/Admin">
<Bindings>
<Binding name="HttpsIn" endpointName="HttpsIn"/>
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="HttpIn" protocol="http" port="80" />
<InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="www.domain.com" />
</Endpoints>
<Certificates>
<Certificate name="www.domain.com" storeLocation="LocalMachine" storeName="My" />
</Certificates>
我正在尝试为https://www.domain.com/Admin目录要求SSL。但是,此配置允许在没有SSL的情况下连接到此URL。有没有办法在Azure的子目录中要求SSL?
答案 0 :(得分:2)
如果您正在使用MVC并对要通过SSL强制执行的任何控制器和/或操作实施[RequiresSSL]属性,请使用breischi的答案。否则,您还可以使用Url Rewrite来完成任务(将规则添加到web.config):
<rule name="Force HTTPS" enabled="true">
<match url="^.*/Admin/(.*)$" ignoreCase="false" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/Admin/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
答案 1 :(得分:1)
如果/ SampleWebsite /包含/ Admin /子目录的所有代码,我认为没有办法阻止用户使用HTTP连接它。我想你在这里有几个选择: