10

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

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

谁能看到我哪里出错了?

4

2 回答 2

6

只是一个简单的错字。您需要将 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)" />
于 2011-10-28T12:47:33.737 回答
4

休息一下,重新审视它后,我意识到语法实际上还不错。

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

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

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

于 2011-10-31T16:32:02.680 回答