Web配置转换语法

时间:2011-10-28 12:29:20

标签: asp.net web-config web-config-transform xdt-transform

我一直在关注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)" />

上述工作正常,所以我认为也是如此。

谁能看到我出错的地方?

2 个答案:

答案 0 :(得分:6)

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

您需要在此处更改sqlConnectionString:

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

to stateConnectionString:

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

答案 1 :(得分:4)

休息一下后,用一双新鲜的眼睛回过头来,我意识到语法实际上很好。

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

一旦我回到原本应该去的地方,问题就解决了,变换就是再次正确地检测元素并应用变换。

所以,经验教训:如果一个变换神秘地没有应用于一个元素(当它在另一个元素上工作正常时),请检查以确保该元素正确定位。