2012-11-13 75 views
0

我有一個覆蓋在設置項目文件中像這樣的web.config文件:AppHarbor Web.config文件轉換誤差

<applicationSettings> 
    <MvcApplication.Properties.Settings> 
     <setting name="FacebookUrlAuth" serializeAs="String"> 
     <value>http://URL1.com</value> 
     </setting> 
     <setting name="GoogleUrlAuth" serializeAs="String"> 
     <value>http://URL2.com</value> 
     </setting> 
    </MvcApplication.Properties.Settings> 
    </applicationSettings> 

我有web.release.config是將這些人設置:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <applicationSettings> 
    <MvcApplication.Properties.Settings> 
     <setting name="FacebookUrlAuth" serializeAs="String" xdt:Locator="Match(name)" xdt:Transform="Replace"> 
     <value>http://AlternativeUrl1.com</value> 
     </setting> 
     <setting name="GoogleUrlAuth" serializeAs="String" xdt:Locator="Match(name)" xdt:Transform="Replace"> 
     <value>http://AlternativeUrl2.com</value> 
     </setting> 
    </MvcApplication.Properties.Settings> 
    </applicationSettings> 
</configuration> 

當我在發佈配置發佈解決方案,它工作正常(我的意思是隻有網址變得不同於web.config)

但是,當Appharbor發佈的應用程序,我得到一個運行時錯誤從帕格Ë我用@Settings.Default.FacebookUrlAuth

與以下細節:

無法識別的元素的 '設置'。 (D:\網站\ 45 \ 31968 \ 17022 \ 0x0001_PublishedWebsites \ MVC.Web \ web.config 73行)

當我評論所有轉換規則,AppHarbor從我的默認web.config中取得這些屬性,一切正常。 這是AppHarbor方面的問題嗎?

+0

friism:你是絕對正確的!出於某種原因,Appharbor以錯誤的方式轉換了我的配置。請出來收回+1 – Anubis

+0

我已經找到了麻煩。正如弗里斯特所說,然後刪除了他的解決方案:「你不能有多個設置元素,這個錯誤可能與轉換無關。」並提供瞭解釋的鏈接:http://blogs.msdn.com/b/tess/archive/2010/02/16/system-configuration-configurationerrosexception-unrecognized-element-setting-and-other-unrecognized-elements .aspx我已經從AppHarbor主機讀取了exactely web.config,並發現在轉換之後,這些設置是排隊的。所以,我認爲這是一個AppHarbor錯誤。 – Anubis

回答

0

can't have multiple setting elements。該錯誤可能與轉換無關。

+0

請參閱我的設置寫入的方式。他們不在一條線上。 – Anubis

+0

你是對的!最後的麻煩是因爲它轉換爲一個內聯設置 – Anubis

+0

@Anubis,我很驚訝你得到了這個工作 - 我遇到了一些問題,甚至得到執行轉換,如這裏所述http://stackoverflow.com/q/14739099/171810 , 有任何想法嗎? – Teto