【问题标题】:ConnectionString configSource not found when deployed to Azure部署到 Azure 时找不到 ConnectionString configSource
【发布时间】:2014-12-31 01:37:39
【问题描述】:

我正在保护我的 MVC5 项目,方法是将连接字符串从 web.config 移出到外部文件中,而不是将其签入源代码管理,也不将其添加到项目中。

我的 web.config 看起来像

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

这在开发中完美运行。

我的网站托管在 Azure 网站中,并且我在配置门户中手动定义了连接字符串。

问题是当我发布到 Azure 时,我得到了错误 “无法打开 configSource 文件 'ConnectionStrings.config'。”

有没有办法覆盖 web.config 中的连接字符串元素,使其不会尝试查找外部文件? Web 转换能够做到这一点吗?

提前致谢,感谢所有帮助

【问题讨论】:

    标签: azure web-config connection-string


    【解决方案1】:

    在 web.config 上使用 RemoveAttributes 转换并在部署到 Azure 时删除 configSource 属性。

    【讨论】:

      【解决方案2】:

      这就是我的工作:

      <connectionStrings>
      <add name="Entities" connectionString="" providerName="System.Data.EntityClient" />
      </connectionStrings>
      

      我使用的是 EF,所以它期望这样;如果你有 name = "myConnection" 那么这就是上面所反映的; connectionString="" 可以留空;

      然后在 azure -> Config 中,在 Connection String 下,对于 Name 我有 Entities for Value 我有我的 EF 连接字符串。

      只要您匹配名称,Azure 就会覆盖您的 web.config;这有意义吗?

      搞砸之后...这似乎是一种解决方法...从 ConnectionStrings.config 中删除连接字符串值,然后在提交中检查并推送,然后将其添加到您的忽略列表 (gitignore) 提交中和 push.,这应该会阻止错误出现,因为文件现在存在;它没有您的敏感数据。现在配置值应该传播到配置 - 我确定你已经想到了这一点,但这似乎是最简单的解决方法。

      【讨论】:

      • 在 Azure 配置中(即在门户中)我定义了 3 个标准连接字符串
      • 我通常会在没有密码的情况下签入我的开发连接字符串。然后在 Azure 中,我使用 EF,所以我的配置有这个部分 - 更新了我上面的答案。
      • 还有;您可以检查以确保将 ConnectionStrings.config 设置为“始终复制”... :) 如果您想坚持使用它应该可以让您现有的事情继续下去
      • 感谢您的建议,但这并不完全奏效。首先,关于“始终复制”,请记住 connectionstrings 文件不是解决方案/项目的一部分,它只是位于项目目录中的一个文件。这使它不受源代码控制的影响。
      • 其次,当我们处于本地调试模式时,在 web.config 中添加空的连接字符串实体,然后在 Azure 门户中覆盖它们对我们没有帮助。这个想法是有一个干净的文件,开发人员将其存储在管理连接字符串的本地机器上,其中一些是高度安全且重要的。
      猜你喜欢
      • 2013-02-04
      • 1970-01-01
      • 2017-11-22
      • 2021-06-10
      • 1970-01-01
      • 2021-11-06
      • 2013-08-01
      • 2017-05-07
      • 1970-01-01
      相关资源
      最近更新 更多