Iis Azure云服务;HTTP->;HTTPS URL重写导致500.19错误

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

我正在将web应用程序部署为Azure云服务。 云服务配置为HTTP和HTTPS指定端点。 所有相关的CSCFG和CSDEF证书都已正确配置,证书已部署,所有这些都正常工作

我现在想添加一个HTTP->HTTPS重写规则,以强制对HTTP的任何调用重定向到安全站点

我的web.config上有一个web.production.config转换,它添加了以下块。 (摘自)


这将导致部署的配置文件中出现以下
部分

<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>