где находится правильное место, чтобы добавить IOperationBehavior программно - PullRequest
3 голосов
/ 25 мая 2009

как я могу добавить IOperationBehavior программно при работе на iis? не на пользовательском хосте wcf.

спасибо

Али ТАКАВЧИ

Ответы [ 2 ]

8 голосов
/ 25 мая 2009

Вы можете прикрепить его как атрибут:

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
}

И прикрепить атрибут к операции

[ServiceContract]
public interface ICustomServiceContract
{
    [CustomInspector]
    [OperationContract]
    void MyOperation();
}
3 голосов
/ 25 мая 2009

Вам необходимо создать узел пользовательской службы , а затем настроить файл .svc для его использования. На хосте настраиваемых служб вы можете делать с сервисом все, что захотите, до его запуска, включая настройку поведения. Поскольку вы хотите использовать поведение операций, вы должны сделать это в методе OnOpening () - поскольку фабрика сервисов применяет сбрасывает поведение операций после настройки поведения конечных точек. Вы сможете перебирать конечные точки и операции в OnOpening.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...