0

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

    }
}

4

2 回答 2

1

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

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

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

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

于 2012-06-20T08:21:36.980 回答
0

我在这篇关于动态地将方法添加到 WCF 服务的文章中找到了我正在寻找的内容,而无需将其添加到每个服务合同中。

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

于 2012-10-01T03:26:36.853 回答