部署到Azure时找不到ConnectionString configSource

时间:2014-12-31 01:37:39

标签: azure web-config connection-string

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

我的web.config看起来像

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

这在开发中非常有效。

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

问题是,当我发布到Azure时,我收到错误 &#34;无法打开configSource文件&#39; ConnectionStrings.config&#39;。&#34;

有没有办法覆盖web.config中的Connection Strings元素,所以它不会尝试找到外部文件? Web Transforms能够做到吗?

提前致谢,所有帮助表示赞赏

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

这就是我的所作所为:

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

我使用EF,所以它期望;如果你有name =“myConnection”那么这就是上面要反映的内容; connectionString =“”可以保持空白;

然后在天蓝色 - &gt;在连接字符串下的配置,对于名称我有值的实体我有我的EF连接字符串。

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

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