1

所以這是一個相當搞笑的錯誤,很難追蹤,所以我要在這裏查找所有東西以防萬一發生在其他人身上;重新命名的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正常工作,但這不是我想要的,所以我進一步調查了一下。有趣的是,剛剛進入該項目的同事可以使用單獨的配置運行應用程序,但我和另一位開發該項目一段時間的開發人員卻無法完成這項工作。

我和另一位具有完全相同設置的同事如果使用與新鮮結賬的人相同的配置有失敗的應用程序,它是否正常工作?

回答

0

它原來是IISExpress曾在一個.vs文件夾在保存以前的設置解決方案的根級別,所有這三個實例都使用相同的配置,並尋找相同的文件,因此出現錯誤。

的解決方案如下:

  1. 在web應用程序的項目,重新設置網絡屬性看根網站(的\代替\newname\
  2. 廢紙簍整個.vs目錄
  3. 重新啓動Visual Studio並重新加載項目。

對於不同版本的VS,.vs文件夾位於機器上的不同位置。

1

當應用程序通過掃描文件系統從當前目錄到驅動器根目錄並通過查看許多預定義位置(例如位置)時,web.config文件是「合成的」 Machine.Config和默認的ASP.NET配置)。如果您在IIS中的同一網站上使用虛擬目錄,事情會變得更加有趣。

這些文件中的任何一個都可以定義配置節,並且可能將配置外部化,從而導致出現錯誤消息。

MSDN上的以下文檔概述究竟如何配置被解析並組成:

+0

這就是發生的事情。看到我的答案爲修復。 – Izzy