将Web.Config发布到Azure将删除Azure存储连接字符串
我有一个web.config,其中包含我的SQL连接字符串和Azure Blob存储连接字符串 Web.Config转换将我的本地SQL连接字符串替换为Azure连接字符串 当我将站点发布到Azure时,Blob存储连接字符串被删除并替换为重复的SQL连接字符串,但替换为Blob存储字符串的名称 我找到的唯一修复方法是通过FTP登录,并手动将错误的存储连接字符串更改为本地计算机上的正确字符串 我如何让VS将我的web配置发布到Azure并让它保持独立 Web.Config将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
<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进行部署。您的部署/打包方法是什么?