WCF服务行为将操作添加到“我的服务”

WCF服务行为将操作添加到“我的服务”,wcf,servicebehavior,Wcf,Servicebehavior,我想创建一个服务行为,将额外的服务操作添加到我的服务中。通过这种方式,我可以将该行为添加到我的任何服务(现有的和未来的),我的服务都将能够执行这个额外的服务操作。(例如,ping或返回一些其他服务信息) 我不确定在这里要做什么来实现我想要的,到目前为止,我尝试的是实现一个服务行为,它试图修改服务描述。我应该添加一个端点,然后在该端点上指定一个新的契约吗 public class MyOperationBehavior : IServiceBehavior { void IServiceB

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

    }
}

使用服务的好处之一是,您将向您的消费者公开定义良好且相当静态的操作集

我不确定在运行时动态添加服务操作对您的消费者有何好处

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


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

我在本文中找到了我想要的内容,而不必将其添加到每个服务合同中


但我也相信,使用WS-Discovery是实现我想要的目标的更好的方法:在不必接触服务契约的情况下公开有关服务的信息

您所说的额外操作是什么意思?是的,一个额外的服务操作也许我的问题是错误的,我走错了方向。IMetadataExchange是一种在端点上公开服务信息的行为,我正在尝试做类似的事情。对不起,我是说servicemetadatabehaviorSorry,我不知道你在这里得到了什么。听起来好像您想添加一个端点操作,但是标准的方法是修改您的服务契约。