当前位置:  开发笔记 > 后端 > 正文

.NET Config文件应用程序目录文件夹外的configSource

如何解决《.NETConfig文件应用程序目录文件夹外的configSource》经验,为你挑选了5个好方法。

我有两个应用程序,一个是控制台应用程序,另一个是ASP.NET应用程序.他们都需要知道相同的appSettings和connectionStrings.理想情况下,我想使用app.config/web.config文件的configSource属性将其指向一个中心位置.例如



然而,这失败了一个错误:

configSource属性无效:configSource'D:\ appSettings.config'无效.它必须引用与配置文件相同的目录或子目录中的文件.

无论如何仍然使用配置管理器appSettings/connectionStrings并从外部位置获取值?
我很高兴不得不添加代码来完成它,但我不想替换整个配置管理器系统.



1> 小智..:

另一种解决方案是将所有项目中的配置文件添加为链接,而不是将文件实际复制到项目中.然后将文件的"Build Action"设置为"Content",将"Copy to Output Directory"设置为"Copy if newer",编译项目时,您将把文件放在输出目录中.

要在"添加现有项"对话框中将文件添加为链接,可以使用带有下拉列表的"添加"按钮.从"添加"按钮的下拉列表中选择"添加为链接"以完成该过程.


当然,只有在我决定分解并发表评论寻求帮助之后,我才会在之后弄明白.我注意到我的db.config被_also_复制到/ bin /文件夹,所以我更新了我的web.config以在其`configSource`中添加此路径并且一切看起来都很好.再次感谢!
你好,我喜欢这个答案,并试图将它应用到我自己的项目中,当我"发布"我的应用程序(db.config被复制到你所说的webroot)时,一切似乎工作正常,但是在通过VS调试时却没有和卡西尼.相反,我得到"无法打开configSource文件'db.config'"异常.为了能够做到这一点,有什么我想念的东西吗?谢谢!

2> 小智..:

在appSettings下,您可以使用file =而不是configSource =



3> Iain M Norma..:

看起来就是这样.configSource必须位于同一文件夹或更深层.

可以,虽然我不确定你应该使用NTFS硬链接.[疯狂的笑容]



4> Richard..:

您可以从任意位置加载配置,它不能通过ConfigurationManager的静态属性获得:

Configuration myConfig = ConfigurationManager.OpenExeConfiguration(path)

(存在一个允许指定多个文件的重载,以支持默认/用户漫游/用户本地层次结构.)

丢失静态属性意味着所有代码都需要了解不同的配置.



5> Serexx..:

Visual Studio 2015

如果你在Web.Config上遇到这个问题,那么接受的答案是正确的,但只是为了扩展,因为这让我给自己的脸掌:

使用"添加为链接"将.config文件添加到项目中,然后将链接的"复制"属性设置为"复制如果更新"或"始终复制",则物理文件将复制到/ bin文件夹.

因此,当您在Web.Config中定义了一个配置节时,如下所示:

 

那么你必须像这样定义相关的配置元素:

  
  

这样configSource指向物理bin\MySpecialConfig.config文件而不是链接 另外,请注意该路径是相对物理路径.

这可能看起来非常明显,但如果你还没有在物理文件还没有在\ bin文件夹中之前这样做,那么它可能不会马上点击​​.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有