将Web.Config发布到Azure将删除Azure存储连接字符串

将Web.Config发布到Azure将删除Azure存储连接字符串,azure,visual-studio-2012,web-config,connection-string,azure-storage,Azure,Visual Studio 2012,Web Config,Connection String,Azure Storage,我有一个web.config,其中包含我的SQL连接字符串和Azure Blob存储连接字符串 Web.Config转换将我的本地SQL连接字符串替换为Azure连接字符串 当我将站点发布到Azure时,Blob存储连接字符串被删除并替换为重复的SQL连接字符串,但替换为Blob存储字符串的名称 我找到的唯一修复方法是通过FTP登录,并手动将错误的存储连接字符串更改为本地计算机上的正确字符串 我如何让VS将我的web配置发布到Azure并让它保持独立 Web.Config <c

我有一个web.config,其中包含我的SQL连接字符串和Azure Blob存储连接字符串

Web.Config转换将我的本地SQL连接字符串替换为Azure连接字符串

当我将站点发布到Azure时,Blob存储连接字符串被删除并替换为重复的SQL连接字符串,但替换为Blob存储字符串的名称

我找到的唯一修复方法是通过FTP登录,并手动将错误的存储连接字符串更改为本地计算机上的正确字符串

我如何让VS将我的web配置发布到Azure并让它保持独立

Web.Config

      <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="StorageConnectionString" connectionString="DefaultEndpointsProtocol=https;AccountName=;AccountKey=" />
  </connectionStrings>

Web.Release.Config

  <connectionStrings>
<add name="DefaultConnection"
     connectionString="Server=.database.windows.net,1433;Database=;User ID=@;Password=!;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
     providerName="System.Data.SqlClient"
     xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>

我的问题与你的类似。我不知道为什么,但当您在azure门户的“配置选项卡”中定义连接字符串并在“链接资源”选项卡上关联“链接资源”时,它可能会覆盖Web.config转换中的某些属性,从而导致意外结果。设置新azure网站时,其中一个选项是链接(或创建新)数据库以与网站关联,从而自动分配相关的连接字符串,该字符串可能会尝试覆盖在Web.Release.config中定义的转换操作


检查并查看删除“Azure门户”中的所有连接字符串和链接资源是否可以解决您的问题。只需确保在Web.Release.config中正确定义了生产数据库和存储连接字符串

今天早上我遇到了这个问题,我为VS2015/17想出了一个解决方案

所以我有一个Azure VM,为了在这台机器上发布我的web应用,我使用了VS建议的web部署到Azure VM

我将连接字符串放在一个外部文件中,因此web.config的有用部分如下所示:

  </entityFramework>
  <connectionStrings configSource="ConnectionStrings.config">
  </connectionStrings>
</configuration>

为了防止在发布过程中添加一些连接字符串(在我的例子中,ADO.Net代码是MSSQL数据库连接字符串的第一个),您可以在项目中编辑以下文件:

…\MyProject\Properties\PublishProfiles\YourPublishProfile-WebDeploy.pubxml

在此文件中,查看ItemGroup部件并对其进行编辑,以删除不需要的连接字符串:

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="MyProject.Models.MSSQL_DB" Order="1" Enabled="False">
      <Destination Path="" />
      <Object Type="DbCodeFirst">
        <Source Path="DBContext" DbContext="MyProject.Models.MSSQL_DB, MyProject" Origin="Convention" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>
</PropertyGroup>
<ItemGroup>
    <here are some entries delete the ones you don't need/>
</ItemGroup>


可能已经定义了一些配置转换来实现这一点。是否有web.release.config、web.debug.config等文件。检查这些文件。我有Web.Release.Config和Web.Debug.Config。配置Release.Config以将SQL字符串更改为live server。这就是全部。它不应该改变Blob存储连接。我将在本地测试转换以确保安全。共享您的源代码
web.config
以及您正在使用的web转换和发布生成配置。在VS 2012+中,您可以右键单击变换并选择“预览变换”以查看输出。这就是将推送到Azure的内容-假设您使用VS.NET进行部署。您的部署/打包方法是什么?