如何将合同行为应用于具有属性的服务?

时间:2015-12-29 13:49:28

标签: c# wcf attributes

我已完成所有内容,例如:https://msdn.microsoft.com/en-us/library/system.servicemodel.description.icontractbehavior(v=vs.110).aspx

但我的TestContractBehaviorAttribute方法永远不会被调用:

这是我放置断点的属性:

public class TestContractBehaviorAttribute : Attribute, IContractBehavior
{
    public void ApplyDispatchBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, DispatchRuntime dispatchRuntime)
    {
    }

    public void Validate(ContractDescription contractDescription, ServiceEndpoint endpoint)
    {
    }

    public void ApplyClientBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, ClientRuntime clientRuntime)
    {
    }

    public void AddBindingParameters(ContractDescription contractDescription, ServiceEndpoint endpoint,
        BindingParameterCollection bindingParameters)
    {
    }
}

合同和标有属性的服务:

[ServiceContract]
public interface IService1
{
    [OperationContract]
    string GetData(int value);
}

[TestContractBehavior]
public class Service1 : IService1
{
    public string GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }
}

执行客户端的调用GetData但行为属性方法不执行。

1 个答案:

答案 0 :(得分:0)

在Visual Studio中创建了一个新的WCF服务项目,并按照您对默认Service1类的概述添加了TestContractBehavior。

在启动/托管服务期间调用IContractBehavior方法。对GetData的调用不会触及任何一个。这些是启动方法。

要调试启动方法,您可以在服务构造函数中添加Debugger.Launch();,例如。