【问题标题】:Publishing Web.Config to Azure removes Azure storage connection string将 Web.Config 发布到 Azure 会删除 Azure 存储连接字符串
【发布时间】:2013-07-31 16:14:55
【问题描述】:

我有一个 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)"/>

【问题讨论】:

  • 可能有一些定义的配置转换可能正在执行它。是否有 web.release.config、web.debug.config 等文件。检查这些文件。
  • 我有 Web.Release.Config 和 Web.Debug.Config。 Release.Config 配置为将 SQL 字符串更改为实时服务器。就这样。它不应该改变 Blob 存储连接。我会在本地测试转换以确定。
  • 分享您的源代码web.config 以及您正在使用的 Web 转换和发布构建配置。在 VS 2012+ - 您可以右键单击转换并选择“预览转换”以查看输出。这就是将推送到 Azure 的内容 - 假设您使用 VS.NET 进行部署。你的部署/打包方法是什么?

标签: azure visual-studio-2012 web-config connection-string azure-storage


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    今天早上我为这个问题苦苦挣扎,我想出了一个 VS2015/17 的解决方案。

    所以我有一个 Azure VM,为了在这台机器上发布我的 Web 应用程序,我使用了 Web 部署到 VS 提出的 Azure VM。

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

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

    为了防止 VS 在发布过程中添加一些连接字符串(在我的例子中是 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>
    

    请注意,如果您在此目录中添加文件,则有可能会破坏 VS 上的发布过程。不要添加文件,只需编辑。

    【讨论】:

      猜你喜欢
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 2015-12-02
      • 2021-08-24
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多