【问题标题】:WCF Service Behavior to add an operation to my servicesWCF 服务行为向我的服务添加操作
【发布时间】:2012-06-20 06:59:49
【问题描述】:

我想创建一个服务行为,为我的服务添加额外的服务操作。通过这种方式,我可以将行为添加到我的任何服务(现有的和未来的)中,并且我的服务都将能够执行这个额外的服务操作。 (例如 ping 或返回一些其他服务信息)

我不确定在这里做什么来实现我想要的,到目前为止我尝试做的是实现一个尝试修改服务描述的服务行为。我应该添加一个端点,然后在其上指定一个新合同吗?

public class MyOperationBehavior : IServiceBehavior { void IServiceBehavior.ApplyDispatchBehavior( ServiceDescription desc, ServiceHostBase host) { ServiceEndpointCollection sec = svcDesc.Endpoints; ServiceEndpoint se = new ServiceEndpoint() { se.Address = "DoMyOperation"; se.Binding = "basicHttpBinding"; se.Contract = MyCustomContract; } } }

【问题讨论】:

  • 额外操作是什么意思?应该是附加服务方式吗?
  • @k0stya 是的,额外的服务操作

标签: wcf servicebehavior


【解决方案1】:

使用服务的一个好处是您可以向消费者公开一组定义明确且相当静态的操作。

我不确定能够在运行时动态添加服务操作将如何使您的消费者受益。

我建议,如果您需要根据每个消费者更改服务合同,那么这可能表明您的服务组合可能不适合消费者的需求。

很抱歉,这并不能直接回答您的问题,并感谢按照建议的规模进行的返工可能超出了当前的开发范围。

【讨论】:

  • 也许我的问题是错误的,我正在以错误的方式解决这个问题。 IMetadataExchange 是一种在端点上公开有关服务信息的行为,我正在尝试做类似的事情。 编辑对不起,我的意思是服务元数据行为
  • 抱歉,不确定您在这里得到了什么。听起来好像您想添加一个端点操作,但这样做的标准方法是修改您的服务合同。
【解决方案2】:

我在Dynamically adding methods to a WCF service 上的这篇文章中找到了我想要的内容,而无需将其添加到每个服务合同中。

但我也相信使用 WS-Discovery 是实现我想要的更好的方法:公开有关服务的信息而无需接触服务合同

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多