重新命名的WebSite,Web.Config,Log4Net,使用IIS Express,使用Git版本控制,在VS2015中,失败
所以这是一个相当搞笑的错误,很难追踪,所以我要在这里查找所有东西以防万一发生在其他人身上;重新命名的WebSite,Web.Config,Log4Net,使用IIS Express,使用Git版本控制,在VS2015中,失败
在生产中的网站上工作时,其名称已更改。我注意到IISExpress实例不仅显示新名称,而且还显示“\”和旧名称作为三个单独的实例。
当我试图log4net的添加到项目中,我试图用这条线在web.config:
<log4net configSource="log4net.config" />
哪个应用程序上运行引起以下错误:
the configSource file '[file]' is also used in a parent, this is not allowed.
configSource文件也用于父级,这是不允许的。
这很令人困惑,因为我没有在其他地方使用过这个源代码,并且无论我将其更改为哪个文件,我都得到了相同的错误。
当我完全在web.config中定义它时,log4Net正常工作,但这不是我想要的,所以我进一步调查了一下。有趣的是,刚刚进入该项目的同事可以使用单独的配置运行应用程序,但我和另一位开发该项目一段时间的开发人员却无法完成这项工作。
我和另一位具有完全相同设置的同事如果使用与新鲜结账的人相同的配置有失败的应用程序,它是否正常工作?
它原来是IISExpress曾在一个.vs
文件夹在保存以前的设置解决方案的根级别,所有这三个实例都使用相同的配置,并寻找相同的文件,因此出现错误。
的解决方案如下:
- 在web应用程序的项目,重新设置网络属性看根网站(的
\
代替\newname\
) - 废纸篓整个
.vs
目录 - 重新启动Visual Studio并重新加载项目。
对于不同版本的VS,.vs文件夹位于机器上的不同位置。
当应用程序通过扫描文件系统从当前目录到驱动器根目录并通过查看许多预定义位置(例如位置)时,web.config文件是“合成的” Machine.Config和默认的ASP.NET配置)。如果您在IIS中的同一网站上使用虚拟目录,事情会变得更加有趣。
这些文件中的任何一个都可以定义配置节,并且可能将配置外部化,从而导致出现错误消息。
MSDN上的以下文档概述究竟如何配置被解析并组成:
这就是发生的事情。看到我的答案为修复。 – Izzy