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

Mik*_*ley 34 c# connection-string web-config asp.net-mvc-3

在我当前的项目中,我有一些对本地开发机器有效的连接字符串:

<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="Data Source=localhost;Initial Catalog=MyDB;Integrated Security=SSPI"
  </connectionStrings>
....
</configuration>
Run Code Online (Sandbox Code Playgroud)

我如何使用Web.Config转换从此表达式转换为对我们的生产服务器有效的表达式?生产服务器看起来像:

<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="Data Source=IPAddress,Port;Initial Catalog=SomeOtherDB;User ID=TopSecretUsername;Password=SecurePassword"
  </connectionStrings>
....
</configuration>
Run Code Online (Sandbox Code Playgroud)

语法对我来说并不明显,而且我完全没有在它上面浏览页面.

sbe*_*kur 54

这对我有用,但我也发现它有时候会有点松懈.您将需要创建另一个名为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>
Run Code Online (Sandbox Code Playgroud)


Gar*_*lie 8

您不需要创建新文件,它应该在解决方案资源管理器中,展开Web.config,然后打开Web.Release.config.

Scott Allan在这里有一个很好的视频(在配置和部署>配置转换下).