asp.net core 2多个web.config文件(不同的环境)

时间:2017-11-13 13:31:33

标签: asp.net asp.net-core asp.net-core-mvc

此问题与应用程序配置(自定义)无关,但与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

1 个答案:

答案 0 :(得分:0)

这不是你问题的真实答案,但我认为我认为这是一个更好的解决方案。有一段时间,我发现URL Rewrites必须进入Web.config才会令人沮丧。尽管你很谨慎,但是你几乎不可避免地要在某个时候覆盖Web.config,删除已添加到它的重写。如果开发人员不了解更好并直接通过IIS添加重写,但从不将其复制到源代码管理中的项目Web.config(这种情况经常发生),情况尤其如此。

因此,我开始在IIS中创建一个网站,仅用于重定向。它只有一个Web.config,然后我将我重定向的绑定添加到它。例如,对于这样的重写,您需要将域的HTTP版本的绑定添加到重定向站点,并将HTTPS绑定添加到实际的Web应用程序站点。然后,您可以在重定向“站点”上创建重写规则,并且永远不会担心意外覆盖它,因为您从未在那里发布任何内容。这将完全有效地解决您的问题。