代码之家  ›  专栏  ›  技术社区  ›  Ned

applicationhost.config中是否有configsource的替代方法?

  •  2
  • Ned  · 技术社区  · 6 年前

    ASP.NET站点在IIS中使用ARR(应用程序请求路由)进行负载平衡。相应的URL重写规则放置在 applicationhost.config(应用程序主机配置) .

    在新的配置文件中是否有任何方法可以分离此规则?标签 configSource 不再支持。我读到有关 childSource 但它只在节中受支持。

    这是规则 applicationhost.config(应用程序主机配置) :

    <system.webServer>
            <rewrite>
                <globalRules>
                    <rule name="ARR_TestFarm_loadbalance" patternSyntax="Wildcard" stopProcessing="true">
                        <match url="*" />
                        <action type="Rewrite" url="http://TestFarm/{R:0}" />
                    </rule>
                </globalRules>
            </rewrite>
    </system.webServer>
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   halfer KingofBliss    5 年前

    我敢打赌,在测试/本地开发和生产/部署场景之间,您希望有不同的配置设置。

    我通常使用配置转换来实现这一点,它工作得很好。就像这样:

    你的 app.config 文件基本上成为一个模板。对于给出的示例,您的示例可能如下所示:

    ...
    <system.webServer>
            <rewrite>
                <globalRules>
                    <rule>
                    </rule>
                </globalRules>
            </rewrite>
    </system.webServer>
    ...
    

    然后,创建另一个文件,调用它 app.local.config 看起来是这样的:

    <?xml version="1.0"?>
    <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
        <system.webServer>
                <rewrite>
                    <globalRules>
                        <rule xdt:Transform="Replace">
                            <!-- local rule -->
                        </rule>
                    </globalRules>
                </rewrite>
        </system.webServer>
    </configuration>
    ...
    

    还有一个文件,叫做 app.release.config

    ...
    <system.webServer>
            <rewrite>
                <globalRules>
                    <rule xdt:Transform="Replace" name="ARR_TestFarm_loadbalance" patternSyntax="Wildcard" stopProcessing="true">
                        <match url="*" />
                        <action type="Rewrite" url="http://TestFarm/{R:0}" />
                </rule>
                </globalRules>
            </rewrite>
    </system.webServer>
    ...
    

    您可以在此处找到转换的文档: https://docs.microsoft.com/en-us/previous-versions/dd465326(v=vs.100)

    VS在转换文件时内置了一些规则,但IIRC仅用于web.configs。添加fastkoala将允许app.config转换以及在构建时转换它们的能力, https://marketplace.visualstudio.com/items?itemName=JonDaviswijitscom.FastKoala-WebAppconfigXMLtransforms