Iis Azure云服务;HTTP->;HTTPS URL重写导致500.19错误
我正在将web应用程序部署为Azure云服务。 云服务配置为HTTP和HTTPS指定端点。 所有相关的CSCFG和CSDEF证书都已正确配置,证书已部署,所有这些都正常工作 我现在想添加一个HTTP->HTTPS重写规则,以强制对HTTP的任何调用重定向到安全站点 我的web.config上有一个web.production.config转换,它添加了以下块。 (摘自)Iis Azure云服务;HTTP->;HTTPS URL重写导致500.19错误,iis,azure,url-rewriting,https,azure-web-roles,Iis,Azure,Url Rewriting,Https,Azure Web Roles,我正在将web应用程序部署为Azure云服务。 云服务配置为HTTP和HTTPS指定端点。 所有相关的CSCFG和CSDEF证书都已正确配置,证书已部署,所有这些都正常工作 我现在想添加一个HTTP->HTTPS重写规则,以强制对HTTP的任何调用重定向到安全站点 我的web.config上有一个web.production.config转换,它添加了以下块。 (摘自) 这将导致部署的配置文件中出现以下部分 <system.webServer> <validatio
这将导致部署的配置文件中出现以下
部分
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="DotLess" preCondition="integratedMode" type="dotless.Core.LessCssHttpHandler,dotless.Core" path="*.LESS" verb="*" />
</handlers>
<rewrite>
<rules>
<rule name="RedirectToHTTPS">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true"/>
<add input="{URL}" pattern="/$" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
</conditions>
<action type="Redirect" url="https://{SERVER_NAME}/{R:1}" redirectType="SeeOther"/>
</rule>
</rules>
</rewrite>
</system.webServer>
当我启动站点并浏览到任何URL(http或https、cloudapp.net或customdomain)时,我会得到一个500.19错误
从谷歌上看,这似乎表明URLRewite模块没有打开,但我读到的所有信息都表明,对于云服务应用程序,它在默认情况下是打开的
此外,我还搜索了日志文件。我可以在BLOB存储、wad iis日志文件容器中看到500个错误。但在表存储下的任何事件日志中都找不到任何其他内容。服务配置为转储最详细的应用程序事件和诊断日志信息
有没有办法找出500.19页的确切错误,或者根据上面的指示找出可能出错的地方?我终于找到了问题所在 我在转换中使用了
xdt:insert
,由于构建和部署过程,它实际上运行了两次转换,导致部署的web.config中出现了两个重写部分
解决方法是添加一个空的
<system.webServer>
<rewrite />
</system.webServer>
转到模板配置文件,并改为执行xdt:Replace
通过在发布部署上启用RDP设置,然后在实际实例上检查事件日志、IIS配置和Web.Config,我能够调试它
<system.webServer>
<rewrite />
</system.webServer>