如何在连接字符串上使用Web.Config转换?

45
在我的当前项目中,我有一些连接字符串适用于本地开发机器:
<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="Data Source=localhost;Initial Catalog=MyDB;Integrated Security=SSPI"
  </connectionStrings>
....
</configuration>

如何使用Web.Config转换将此表达式转换为适用于我们的生产服务器的有效表达式? 生产服务器上的表达式可能如下所示:

<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="Data Source=IPAddress,Port;Initial Catalog=SomeOtherDB;User ID=TopSecretUsername;Password=SecurePassword"
  </connectionStrings>
....
</configuration>

对我来说,语法并不明显,我完全无法理解它的页面

2个回答

67

这对我来说有效,但有时我也发现它有点不稳定。 您需要创建另一个名为 Web.Config.Release 的文件,并将其填充以下内容:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

  <connectionStrings>
    <add name="local" connectionString="Data Source=IPAddress,Port;Initial Catalog=SomeOtherDB;User ID=TopSecretUsername;Password=SecurePassword" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>

  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />

  </system.web>
    <appSettings>
        <add key="default_db_connection" value="local" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    </appSettings>
</configuration>

appSettings 部分是可选的,具体取决于您如何设置连接。 - sbeskur
1
那个 appSettings 部分到底是做什么的?另外,我可以安全地假设我可以使用 aspnet_regiis -pef 加密我的转换后的 connectionStrings 吗? - Mike Bailey
如果我有多个连接字符串,例如本地数据库和托管在不同机器上的数据库,我会使用appSettings。这完全是出于方便考虑,以便我可以使用appsetting来决定使用哪个数据库。(我真的应该把它从这个示例中省略掉) - sbeskur

7

有没有可能重新链接到视频?看起来自2011年以来,Pluralsight已经改变了他们的目录结构 :-( - immutabl
1
这个视频正是我所需要的。谢谢。 - MartinJH
1
链接需要付费才能访问。 - Tomas Beblar
该链接以前是免费视频,真遗憾。抱歉。 - Garrett Fogerlie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接