【发布时间】:2014-07-30 07:57:29
【问题描述】:
我有一个 WCF 配置文件,我正在尝试使用 SlowCheetah 进行转换。对于开发用途,我们希望包含 MEX 端点,但是当我们发布产品时,应该在除一个之外的所有服务上删除这些端点。应该保留它的服务器具有以下端点:
<endpoint address="MEX"
binding="mexHttpBinding"
contract="IMetadataExchange" />
应该去掉的如下:
<endpoint address="net.tcp://computername:8001/WCFAttachmentService/MEX"
binding="netTcpBinding"
bindingConfiguration="UnsecureNetTcpBinding"
name="WCFAttachmentServiceMexEndpoint"
contract="IMetadataExchange" />
我使用的转换是:
<service>
<endpoint xdt:Locator="Condition(contains(@address, 'MEX') and not(contains(@binding, 'mexHttpBinding')))" xdt:Transform="RemoveAll" />
</service>
但是,当我运行它时,所有 MEX 端点都会从配置文件中删除,包括我希望保留的端点。我怎样才能使它正常工作?
【问题讨论】:
-
考虑到您发布的示例,这看起来像一个错误。将
endpoints都放在一个XML 文件中,并使用表达式//endpoint[contains(@address, 'MEX') and not(contains(@binding, 'mexHttpBinding'))]只选择较大的那个。 -
您可以尝试另一种匹配:如果
binding属性 always 包含精确字符串,您可以避免使用contains()并使用not(@binding='mexHttpBinding')或@binding != 'mexHttpBinding'. -
我添加了 xdt 和 xdt-transform 标签,这应该有助于吸引使用该工具的用户。
-
@SayedIbrahimHashimi 也可以在这方面提供帮助。
标签: xsd slowcheetah xdt-transform xdt