Asp.net

Web 配置轉換語法

  • February 13, 2014

我一直在關注Web Config Transformation的 MSDN 指南,並且總體上已經取得了成功。

但是,我的網路配置的一行給我帶來了麻煩,我只能假設這是因為我誤解了指南並使用了錯誤的語法。

我希望有人能夠指出我的錯誤,如果是這樣,我將不勝感激。

轉換中的違規行是:

<sessionState sqlConnectionString="data source=localhost;uid=userId;pwd=password;" xdt:Transform="SetAttributes(sqlConnectionString)" />

原始網路配置中的行是:

<sessionState mode="SQLServer" sqlConnectionString="data source=networkAlias;uid=userId;pwd=password;" cookieless="UseDeviceProfile" timeout="120" />

我希望轉換將替換屬性“sqlConnectionString”,從而更改連接詳細資訊。不幸的是,這條線不受影響。

我使用了完全相同的語法:

<network host="localhost" xdt:Transform="SetAttributes(host)" />

上面的工作很好,所以我認為它也是如此。

誰能看到我哪裡出錯了?

休息一下,重新審視它後,我意識到語法實際上還不錯。

問題是,在某個時刻——不知道什麼時候——元素已經從它所屬的元素中移出(可能是我自己或其他團隊成員的複制/粘貼錯誤),所以它只是掛在那里而不是它應該掛在哪裡已經。

一旦我回到它應該在的位置,問題就解決了,變換再次正確檢測元素並應用變換。

所以,吸取的教訓:如果一個轉換神秘地沒有應用於一個元素(當它在另一個元素上工作得很好時),請檢查以確保元素的位置正確。

只是一個簡單的錯字。您需要將 sqlConnectionString 更改為 stateConnectionString。您在 web.config 中擁有它,但不是轉換。否則,變換看起來不錯。

您需要在此處更改 sqlConnectionString:

<sessionState sqlConnectionString="data source=localhost;uid=userId;pwd=password;" xdt:Transform="SetAttributes(sqlConnectionString)" />

狀態連接字元串:

<sessionState stateConnectionString="data source=localhost;uid=userId;pwd=password;" xdt:Transform="SetAttributes(stateConnectionString)" />

引用自:https://stackoverflow.com/questions/7929257