无法打开作为链接添加的 configSource 文件

18
在我的MVC应用程序中,我使用外部配置文件来保持干净的web.config。一些文件是常见的,我从一个位置添加它们到项目中作为链接。对于这些文件,我将复制选项设置为始终复制,这些文件将被复制到目标文件夹,并且我可以看到它们。但是当我尝试在浏览器中打开主页时,我看到“无法打开configSource文件”的错误。当我删除文件链接,只是将它们添加进去(没有链接),一切都运行良好。有任何想法是什么导致这个错误?

不支持此项操作。 - SLaks
哦,真的吗?我读了很多文章描述了这种技术。唯一的重点在于复制选项,它应该始终复制或仅在新版本时复制。 - Alexandr Zaitsev
6个回答

24

最终我找到了问题所在。当使用“始终复制”选项时,文件会被复制到bin文件夹中。但是文件是在虚拟目录而不是bin目录中进行搜索的。因此,我添加了后置构建任务以将文件复制到正确的目标位置。


3
值得注意的是,在connectionStrings.config的情况下,它必须与web.config在同一个文件夹中才能正常工作:https://www.asp.net/identity/overview/features-api/best-practices-for-deploying-passwords-and-other-sensitive-data-to-aspnet-and-azure - Ramón

9
尝试了无法解决问题的xcopy方法后,以下方法对我有用:
右键点击cstrings.config,选择“属性”。
将“复制到输出目录”属性值设置为“始终复制”。

我在log4net配置文件方面遇到了问题,这个帮助了我,谢谢!步骤:右键单击log4net.config,选择【属性】,最后设置[复制到输出]文件属性=>始终复制。 - Tumelo

8

我按照建议添加了一个构建后事件。但是具体步骤如下:

  1. 右键单击项目,然后导航到属性
  2. 单击“生成事件”选项卡
  3. 构建后事件命令行:框中添加以下内容:

xcopy /s "$(ProjectDir)\bin\Config" "$(ProjectDir)\Config"


6

我曾经遇到过同样的问题。在我的情况下,配置文件的“生成操作”属性是导致问题的原因。 (右键单击配置文件>属性>生成操作)

“生成操作”的值被设置为“无”。当我将其更改为“内容”时,问题得到了解决。 (我不确定是“Visual Studio的错误”还是“我误点击了”,导致它被设置为“无”。


5
长话短说:您可以添加 https://dev59.com/JnRB5IYBdhLWcg3wn4fb#38408867
<connectionStrings configSource="bin\Connections.config">  
</connectionStrings>

要区分配置(部署/发布、调试/部署版本),您可以添加转换。无论如何,使用它们非常方便。

(是的,我知道这个话题已经解决了,但也许有人会像我一样发现这些信息很有用)


2

右键单击配置文件 > 属性。将设置设置为如下屏幕截图所示

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接