I have a web.config rewrite rule specified to move all traffic to https. The rule works, but I don’t want SSL required while I am debugging. I have a bunch of web.release.config transformations being done already that work on publish so I decided to put a rewrite rule in there. The problem is that the rewrite rule isn’t being transformed like the rest of the settings. Here is the web.config setup:
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
<rewrite></rewrite>
</system.webServer>
And here is the transformation being done:
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
</rule>
</rules>
</rewrite></system.webServer>
If I just copy the rewrite rule to the web.config it works fine. Does anyone out there have any ideas why web.Release.config transforms aren’t working for only this section?
Transformation will only happen if you put proper
xdtattributes on the elements that need to be transformed. Try adding anxdt:Transformattribute to your release config:That will tell the transformation engine that the entire
system.webServerelement fromWeb.configneeds to be replaced with the one fromWeb.Release.config.The transformation engine will silently ignore any elements that do not have
xdtattributes.Obligatory link to MSDN.