【问题标题】:Web Config Transformation SyntaxWeb 配置转换语法
【发布时间】:2011-12-17 06:33:39
【问题描述】:

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

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

谁能看出我哪里出错了?

【问题讨论】:

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


    【解决方案1】:

    只是一个简单的错字。您需要将 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)" />
    

    【讨论】:

    • 抱歉,我意识到配置中的 stateConnectionString 行毫无意义,因为我们在 SQLServer 模式下运行,所以我删除了它。即便如此,这不和我已经做过的一样吗?转换应该替换 sqlConnectionString 属性,但不是,除非我有点密集。
    • @Jonathan 在您的示例中,您告诉它替换 sqlConnectionString,但 sqlConnectionString 不存在。因此它什么也不做。它必须匹配一些东西来替换它。 sqlConnectionString 在 sessionState 元素上也无效,这可能是它不起作用的原因。
    • 根据 MSDN (msdn.microsoft.com/en-us/library/h6bb9cz9(v=VS.100).aspx) sqlConnectionString 是一个有效属性,与 mode="SQLServer" 一起使用。如果 mode="StateServer",那么它需要 stateConnectionString 属性。其他人如何使用 ASPState 数据库来存储状态,这是我们目前所做的,我们不在服务器上运行 ASP State 服务。另外,在我的示例中,第一个代码 sn-p 是转换,第二个代码也是它正在应用的网络配置,存在 sqlConnectionString,所以恐怕我不明白您的评论。
    • 不管怎样,我尝试了您的建议,但很遗憾,它没有效果。我也无法转换 timeout 属性,但是在其他元素上进行如此简单的转换时没有遇到这个问题,所以也许我的问题是我没有考虑到语法之外的问题。
    • 问题已解决,等待时间过去,我才能正确回答问题。感谢您的努力。
    【解决方案2】:

    休息一下,重新审视它,用一些新的眼光重新审视它,我意识到语法实际上还不错。

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-05-25
      • 1970-01-01
      • 2023-02-12
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 2015-05-09
      • 2014-11-23
      相关资源
      最近更新 更多