我正在保护我的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能够做到吗?
提前致谢,所有帮助表示赞赏
答案 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)提交并推送。,这应该可以阻止错误显示,因为文件现在存在;它没有你的敏感数据。现在配置值应该传播到配置 - 我确定你已经想到了这一点,但这似乎是最简单的解决方法。