asp.net更改web.config项的值?

时间:2010-11-17 16:50:58

标签: asp.net web-config

我试图让角色提供者在多个环境中工作并碰壁 (link text

我应该能够动态地将app_onstart上web.congig项的connectionString属性设置为正确的DB连接字符串,以使其工作...

任何人都可以告诉我如何动态更改web.config中的项目吗? 我猜测反思......

<roleManager enabled="true" defaultProvider="SqlRoleManager">
    <providers>
        <clear/>
        <add name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider" connectionStringName="ISConnectionString_prod" applicationName="IS"/>
    </providers>
</roleManager>

我想调整上面snipet中的connectionStringName值

感谢

2 个答案:

答案 0 :(得分:1)

如果您使用的是VS2010,则可以根据您要发布的环境将其发送到automatically apply transforms配置文件。

我们使用它来设置连接字符串,支付提供商配置设置(沙箱模式,用户名等)以及其他一些事项,例如如何处理异常。

如果您不发布,您可以通过编辑项目文件将这些转换直接挂钩到构建引擎中。

这使得维护非常简单(您有web.configweb.Live.config,其中包含转换)。它还使整个过程更不容易出错

例如:

的web.config

  <connectionStrings>
    <clear />
    <add name="OurConnectionString" connectionString="Data Source=DevDbHostname;Initial Catalog=DevDb;user id=Username;password=Password;MultipleActiveResultSets=True" />
  </connectionStrings>

web.Release.config

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="OurConnectionString"
      connectionString="Data Source=LiveDbHostname;Initial Catalog=LiveDb;user id=Username;password=Password;MultipleActiveResultSets=True"
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
</configuration>

答案 1 :(得分:0)

只要权限允许(您必须更改它们),您就可以像处理任何其他XML文件一样处理web.config。知道这一点,您只需使用 XDocument 并在新的 XElement 中弹出您想要的地方。但要非常小心并确保保存一些备份!