2016-03-30 38 views
7

可有人請給我技術原因<clear></clear>是無效的的app.config VS <clear />爲什麼<clear></clear>與app.config中的<clear />不一樣?

它通常使用的是這樣的:有

<connectionStrings> 
<clear/> 
<add etc..... /> 
</connectionStrings> 

問題是,我使用的是安裝產品(的InstallShield)沒有XML轉換到的app.config文件,它正在改變<clear /><clear></clear>

這打破了應用程序(服務將不會開始)

現在我只是在尋找技術解釋,但是如果您有任何解決方法,那也不錯。

+0

什麼是錯誤,當您啓動該服務?該語法仍然有效,應該沒有理由失敗。 –

+0

它在運行時嘗試啓動服務時,是無效的xml。 –

+6

隨機猜測:''解析爲'null',但''解析爲空字符串。雖然很容易認爲它們是同一件事,但當你想知道它們之間的差異時,有一些背景。 –

回答

1

看來,使用<clear></clear>打破了connectionStrings部分的解析(如果在那裏使用,也可能是其他人)。請參閱Hans Passant對可能的解釋的評論。如果<clear></clear>存在,則ConfigurationManager.ConnectionStrings爲空。因此,服務崩潰的原因可能是,您不檢查此集合是否包含任何元素,或者嘗試通過ConfigurationManager.ConnectionStrings["nameoftheconnection"]訪問它們,如果沒有包含該關鍵字的元素,則會引發異常。

可能的解決方法(我聯繫都相當笨拙和哈克)

  1. 您刪除<clear />。這可能會導致由一些引用程序集創建的一些附加連接字符串。但是,由於您自己的連接字符串應該位於此集合的末尾,因此您可以刪除不需要的條目。

  2. 您自定義任務添加到您的安裝例程,它在處理的後續步驟之一的app.config文件,並替換<clear></clear><clear />

+0

這個建議是現貨。我實際上最終以選項2運行。 –

相關問題