我试图让角色提供者在多个环境中工作并碰壁 (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值
感谢
答案 0 :(得分:1)
如果您使用的是VS2010,则可以根据您要发布的环境将其发送到automatically apply transforms配置文件。
我们使用它来设置连接字符串,支付提供商配置设置(沙箱模式,用户名等)以及其他一些事项,例如如何处理异常。
如果您不发布,您可以通过编辑项目文件将这些转换直接挂钩到构建引擎中。
这使得维护非常简单(您有web.config
和web.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 中弹出您想要的地方。但要非常小心并确保保存一些备份!