此问题与应用程序配置(自定义)无关,但与IIS设置有关。
所以当我为我的应用程序创建发布时,我需要在web.config中使用以下内容。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>
</configuration>
然而,在调试时我只想要部分而不是http重定向(如果我尝试使用web.config中的重写调试我的应用程序,它就不会启动)
在以前的asp.net中,我们可以有多个web.configs用于调试和发布,它会在发布时进行转换。
我只想在发布时将所有上述代码放在web.config中,并且在调试时只有部分应用于web.config
答案 0 :(得分:0)
这不是你问题的真实答案,但我认为我认为这是一个更好的解决方案。有一段时间,我发现URL Rewrites必须进入Web.config才会令人沮丧。尽管你很谨慎,但是你几乎不可避免地要在某个时候覆盖Web.config,删除已添加到它的重写。如果开发人员不了解更好并直接通过IIS添加重写,但从不将其复制到源代码管理中的项目Web.config(这种情况经常发生),情况尤其如此。
因此,我开始在IIS中创建一个网站,仅用于重定向。它只有一个Web.config,然后我将我重定向的绑定添加到它。例如,对于这样的重写,您需要将域的HTTP版本的绑定添加到重定向站点,并将HTTPS绑定添加到实际的Web应用程序站点。然后,您可以在重定向“站点”上创建重写规则,并且永远不会担心意外覆盖它,因为您从未在那里发布任何内容。这将完全有效地解决您的问题。