为啥 Web.config 在项目文件夹而不是 bin 中寻找 configSource?
Posted
技术标签:
【中文标题】为啥 Web.config 在项目文件夹而不是 bin 中寻找 configSource?【英文标题】:Why is Web.config looking for configSource in project folder instead of bin?为什么 Web.config 在项目文件夹而不是 bin 中寻找 configSource? 【发布时间】:2012-08-08 02:14:52 【问题描述】:我已经定义了我的 configSource 在名为 config 的子目录中查找配置文件,如下所示:
<connectionStrings configSource="config\ConnectionStrings.config" />
我将配置文件定义为链接文件,因此当构建发生时,它会被复制到我的 bin\config 文件夹中。
但是,我的 Web 应用程序项目正在查看 development 项目配置文件夹,而不是 deployment bin\config 文件夹。我通过 Process Monitor 确认了这一点。
所以我有几个问题:
-
为什么它看起来在那里而不是 bin\config - 我是否在某处错过了相对路径设置?
链接的文件不会复制到那里,而只是复制到 bin。我的理解是这是正确的行为。这是一个正确的假设还是应该将其复制到两个位置?如果是这样,启用它的设置是什么?
为链接文件使用子文件夹是一种好习惯,还是应该将它们保留在项目根目录中?
非常感谢!
更新:我正在使用此处描述的方法:http://consultingblogs.emc.com/jamesdawson/archive/2008/06/03/using-linked-files-with-web-application-projects.aspx 来确保复制配置文件,并进行了一些实验,我已经回答了问题 #2。不,这不是 Visual Studio 中的默认行为,但此解决方法可确保将文件复制到两个位置。
【问题讨论】:
【参考方案1】:我相信这可能会对您有所帮助。 How to use multiple Web.config files
基本上,您可以拥有任意数量的配置文件,只要它们位于 Web 应用程序的单独文件夹中即可。我对你提到“不同的网络项目”的部分评论感到有些困惑,你能在那个部门更具体一点吗? 另外,我在msdn 上找到了有关此的更多详细信息,建议您查看一下。
编码愉快!
【讨论】:
好吧,我不认为我使用“不同的 Web 项目”这个短语,但我确实有多个使用链接文件 ConnectionStrings.config 的目标项目(3 个 Web 项目和一个控制台应用程序)。问题不在于有多少配置文件。我不喜欢的是 Web 项目在我的开发路径中查找配置文件的部署路径。控制台应用程序没有这样做。我的期望是 web.config 将在编译后在部署路径中查找链接文件,就像我的控制台应用程序的 app.config 一样。抱歉,不清楚! 您好,如果我正确理解了您的问题,这里唯一的问题是 web.config 没有从预期位置读取链接文件。从我可以挖掘的内容来看,似乎需要指定确切的文件位置,以便 web.config 读取它。这是我的[链接](信息来源:***.com/questions/2411184/…) 您好,如果我正确理解了您的问题,这里唯一的问题是 web.config 没有从预期位置读取链接文件。从我可以挖掘的内容来看,似乎需要指定确切的文件位置,以便 web.config 读取它。这是我的[信息来源][1][1]:***.com/questions/2411184/…在我的项目中我实际上使用了这种方法,希望这可以解决您的问题。 谢谢,是的,我确实读过那篇文章。如您所见,它不是绝对路径,而是相对路径,这就是为什么您只能将 configSource 指定为位于同一目录内或同一目录下的原因。当我部署时,我希望软件从部署根目录开始,不需要知道开发根目录——显然我不会在服务器上拥有我的源代码,对吧?所以,也许这只是调试时的一个问题,但即使在这种情况下,为什么我的应用程序还需要知道我的源代码文件夹的任何信息呢?以上是关于为啥 Web.config 在项目文件夹而不是 bin 中寻找 configSource?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET WebService 仅在使用 Http Get 但 web.config 设置正确时错误地返回 XML 而不是 JSON
C#/ ASP.Net:app.settings而不是web.config