在哪里是以编程方式添加IOperationBehavior的正确位置

3 wcf

如何在iis上运行时以编程方式添加IOperationBehavior?不在自定义wcf主机上.

谢谢

阿里塔卡维奇

Dar*_*rov 8

您可以将其作为属性附加:

public class CustomInspectorAttribute : Attribute, IOperationBehavior, IParameterInspector
{
    #region IOperationBehavior Members

    public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters)
    {
    }

    public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
    {
        // Attribute could be used on client side
        clientOperation.ParameterInspectors.Add(this);
    }

    public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
    {
        // Attribute could be used on server side
        dispatchOperation.ParameterInspectors.Add(this);
    }

    public void Validate(OperationDescription operationDescription)
    {
    }

    #endregion




    #region IParameterInspector Members

    public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
    {
         // Do something with returned values from operation
    }

    public object BeforeCall(string operationName, object[] inputs)
    {
        // Do something with incoming parameters before invoking actual operation
        return null;
    }

    #endregion
}
Run Code Online (Sandbox Code Playgroud)

并将该属性附加到操作

[ServiceContract]
public interface ICustomServiceContract
{
    [CustomInspector]
    [OperationContract]
    void MyOperation();
}
Run Code Online (Sandbox Code Playgroud)