这个问题可能要问了一千次,但我还是找不到解决方案..
我有一个.NET应用程序,当在本地运行时,会从HTTP重定向到HTTPS。但是,当部署在Azure Web App中时,重定向将无效。
根据多个论坛帖子,我的重定向是使用Web.config
文件中的规则完成的。下面,您将看到此文件部署在azure上(我使用ftp检查)
<system.webServer>
<staticContent>
<remove fileExtension=".woff" />
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
<remove fileExtension=".woff2" />
<mimeMap fileExtension=".woff2" mimeType="font/woff2" />
<remove fileExtension=".json" />
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{HTTP_HOST}" pattern="([^/:]*?):[^/]*?" />
</conditions>
<action type="Redirect" url="https://{C:1}/{R:1}" redirectType="Permanent" />
</rule>
<rule name="static dist files" stopProcessing="true">
<match url="^(.+)$" />
<conditions>
<add input="{APPL_PHYSICAL_PATH}dist\{R:1}" matchType="IsFile" />
</conditions>
<action type="Rewrite" url="/dist/{R:1}" />
</rule>
<rule name="index.html as document root" stopProcessing="true">
<match url="^$" />
<action type="Rewrite" url="/dist/index.html" />
</rule>
</rules>
<!--<outboundRules>
<rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
<match serverVariable="RESPONSE_Strict_Transport_Security"
pattern=".*" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Rewrite" value="max-age=31536000" />
</rule>
</outboundRules>-->
</rewrite>
</system.webServer>
此Web.config
文件是原始Web.config
文件上转换的结果,因为在本地,HTTPS的端口设置为44362,因此{{本地使用的1}}有点不同:
Web.config
在当地,每个人都可以正常工作。重定向立即完成。 但是,当部署在azure Web应用程序中时,重定向不会发生。 所以“---.azurewebsites.net”不会自动重定向到“https://---.azurewebsites.net”
我可以看到,他达到了te规则,因为浏览器标签的标题在此规则的名称中重命名了一段时间。
如果有人发现此代码中的愚蠢错误,请告知我们。
此致
答案 0 :(得分:2)
Azure App Service中有一个扩展程序可以自动为您执行此操作。
这些说明可能会随着Azure门户网站的更改而发生变化,但截至2018-05这是最新的。
之后,您的所有HTTP流量都将重定向到HTTPS,而无需进行其他更改。
答案 1 :(得分:0)
我已经
了 <rewrite>
<rules>
<rule name="Redirect to https">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="Off" />
<add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
在Azure中非常成功