我想创建一个服务行为,为我的服务添加一个额外的服务操作。 这样,我可以将行为添加到我的任何服务(现有和将来),并且我的服务都将能够执行此额外的服务操作。(例如 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 是实现我想要的更好方法:公开有关服务的信息,而不必接触服务协定。