WCF 服务行为,用于向我的服务添加操作



我想创建一个服务行为,为我的服务添加一个额外的服务操作。 这样,我可以将行为添加到我的任何服务(现有和将来),并且我的服务都将能够执行此额外的服务操作。(例如 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;           
       }
    }
}

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

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

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

很抱歉,这并不能直接回答您的问题,并理解建议的规模返工可能超出当前的开发范围。

我在这篇文章中找到了我要查找的内容 动态向 WCF 服务添加方法,而不必将其添加到每个服务协定。

但我也相信使用 WS-Discovery 是实现我想要的更好方法:公开有关服务的信息,而不必接触服务协定。