部署连接字符串

时间:2014-07-16 18:55:43

标签: c# .net entity-framework asp.net-mvc-5 microsoft-web-deploy

我有这些文件:

的Web.config

 <connectionStrings>
 </connectionStrings>

Web.Debug.config

  <connectionStrings>
    <add name="Elite.DAL.MainContext"
     connectionString="Data Source=FISH\SQLEXPRESS;Initial Catalog=Elite;Integrated Security=True"
     providerName="System.Data.SqlClient" />
  </connectionStrings>

Web.Releas.config

  <connectionStrings>
    <add name="Elite.DAL.MainContext"
         connectionString="Data Source=1LEINTRA\SFSQL;Initial Catalog=Elite;Integrated Security=True"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

我做错了吗?

当我使用Web-Deploy发布时,我得到了这个:

  <connectionStrings>
    <add name="Elite.DAL.MainContext" connectionString="Elite.DAL.MainContext_ConnectionString" providerName="System.Data.SqlClient" />
    <add name="Elite.DAL.MainContext_DatabasePublish" connectionString="Elite.DAL.MainContext_DatabasePublish.ConnetionString" providerName="System.Data.SqlClient" />
  </connectionStrings>

Format of the initialization string does not conform to specification starting at index 0.

此外,当我发布时,我选择运行第一次代码迁移,但不创建表,这是初始迁移的一部分。

<contexts>
  <context type="Elite.DAL.MainContext, Elite">
    <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Elite.DAL.MainContext, Elite], [Elite.Migrations.Configuration, Elite]], EntityFramework, PublicKeyToken=b77a5c561934e089">
      <parameters>
        <parameter value="Elite.DAL.MainContext_DatabasePublish" />
      </parameters>
    </databaseInitializer>
  </context>
</contexts>

1 个答案:

答案 0 :(得分:0)

您应该将Debug连接字符串放在常规web.config中。然后,您可以使用XML-Document-Transform选项来配置发布版本。

然后,您可以告诉转换过程您要更改常规web.config中的连接字符串,如下所示:

  <add name="lite.DAL.MainContext" 
      connectionString="Data Source=1LEINTRA\SFSQL;Initial Catalog=Elite;Integrated Security=True" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>

您可以找到Web.config转换语法here的文档。

如果您确实要保留空的web.config,可以使用以下语法:

<connectionStrings xdt:Transform="Replace" >
    <add name="Elite.DAL.MainContext"
     connectionString="Data Source=FISH\SQLEXPRESS;Initial Catalog=Elite;Integrated Security=True"
     providerName="System.Data.SqlClient"/>
  </connectionStrings>

通过将它放在web.debug.config和web.release.config中,可以配置应替换web.config中的整个(空)connectionStrings元素。