我想创建一个服务行为,为我的服务添加额外的服务操作。这样我可以将行为添加到我的任何服务(现有和未来),我的服务都将能够执行此额外的服务操作。 (例如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;
}
}
}
答案 0 :(得分:1)
使用服务的一个好处是,您向消费者展示了一套定义明确且相当静态的操作。
我不确定如何在运行时动态添加服务操作会使您的消费者受益。
我建议如果您需要基于每个消费者更改服务合同,那么它可能表明您的服务组合可能不符合您的消费者的需求。
道歉这不能直接回答您的问题,并且意识到在建议的规模上进行的重新工作可能超出了当前的开发范围。
答案 1 :(得分:0)
我在Dynamically adding methods to a WCF service的文章中找到了我想要的内容,而无需将其添加到每个服务合同中。
但我也相信使用WS-Discovery是实现我想要的更好的方式:在不必触及服务合同的情况下公开服务信息