Web配置转换语法

Jon*_*han 9 asp.net web-config web-config-transform xdt-transform

我一直在关注Web配置转换的MSDN指南,并且大体上都取得了成功.

但是,我的网络配置的一行是给我的麻烦,我只能假设它是因为我误解了指南并使用了错误的语法.

我希望有人能够指出我的错误,如果是这样的话,我将不胜感激.

变换中的违规行是:

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

原始Web配置中的行是:

<sessionState mode="SQLServer" sqlConnectionString="data source=networkAlias;uid=userId;pwd=password;" cookieless="UseDeviceProfile" timeout="120" />
Run Code Online (Sandbox Code Playgroud)

我希望转换将替换属性"sqlConnectionString",改变连接细节.不幸的是,这条线不受影响.

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

<network host="localhost" xdt:Transform="SetAttributes(host)" />
Run Code Online (Sandbox Code Playgroud)

上面的工作很好,所以我认为它也是如此.

谁能看到我哪里出错了?

Doo*_*ake 6

只是一个简单的错字.您需要将sqlConnectionString更改为stateConnectionString.你在web.config中拥有它,但不是转换.否则,转换看起来很好.

你需要在这里更改sqlConnectionString:

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

到stateConnectionString:

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


Jon*_*han 4

稍事休息并以新的眼光重新审视之后,我意识到语法实际上很好。

问题是,在某些时候 - 不知道什么时候 - 元素已被移出它所属的元素(可能是我自己或其他团队成员的复制/粘贴错误),所以它只是挂在那里,而不是它应该在的地方已经。

一旦我回到它应该在的位置,问题就解决了,转换再次正确地检测到元素并应用转换。

因此,吸取的教训是:如果变换神秘地没有应用于一个元素(当它在另一个元素上运行良好时),请检查以确保该元素位于正确的位置。