我的ASP.NET web.config中的自定义XML节点/标记?

时间:2011-05-06 17:59:55

标签: asp.net xml tags

我们在网络应用中使用安全修整,因此需要以下节点:

<location path="admin/employees" xdt:Transform="Replace" xdt:Locator="Match(path)">
    <system.web>
        <authorization>
            <allow roles="domain\role1,domain\role2"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

<location path="admin/whatever" xdt:Transform="Replace" xdt:Locator="Match(path)">
    <system.web>
        <authorization>
            <allow roles="domain\role1,domain\role2"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

请注意,我们也进行了转型。由于角色与我们拥有的各种环境(开发,登台和生产)不同,因此在所有三种配置中实现转换非常繁琐。

我想要做的是将所有位置节点封装到父节点中,可能称为<locations>。这样,我可以在locations节点上实现转换,而不是每个位置节点,如下所示:

<locations xdt:Transform="Replace">
    <location path="admin/employees">
        <system.web>
            <authorization>
                <allow roles="domain\role1,domain\role2"/>
                <deny users="*"/>
            </authorization>
        </system.web>
    </location>

    <location path="admin/whatever">
        <system.web>
            <authorization>
                <allow roles="domain\role1,domain\role2"/>
                <deny users="*"/>
            </authorization>
        </system.web>
    </location>
</locations>

这可能吗?

1 个答案:

答案 0 :(得分:0)

除非您想在部署后编写一些自定义位以运行,否则您将无法使用MS Build转换。是的,必须设置每个环境有点乏味,但现在这就是野兽的本质。

我过去使用Nant来构建和征服一些转型问题。对某些人来说,有点乏味,但仍然乏味。

我希望我有一个更好的故事。

由于您正在使用位置,您还可以在文件夹中设置公共位并设置特定的web.config。仍然很乏味,但可能不如根源上的单个web.config文件那么痛苦。