我一直在关注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)" />
上述工作正常,所以我认为也是如此。
谁能看到我出错的地方?
答案 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)
休息一下后,用一双新鲜的眼睛回过头来,我意识到语法实际上很好。
问题是,在某些时候 - 不知道什么时候 - 元素已被移动(可能是我自己或其他团队成员的复制/粘贴错误)出自它所属的元素,所以它只是挂在那里而不是应该在哪里。
一旦我回到原本应该去的地方,问题就解决了,变换就是再次正确地检测元素并应用变换。
所以,经验教训:如果一个变换神秘地没有应用于一个元素(当它在另一个元素上工作正常时),请检查以确保该元素正确定位。