Ведение журнала запросов / ответов в службе WCF REST

StackOverflow https://stackoverflow.com/questions/1653751

  •  11-09-2019
  •  | 
  •  

Вопрос

Я ищу способ регистрировать как запросы, так и ответы в службе WCF REST.Стартовый набор WCF REST поставляется с классом RequestInterceptor, который может использоваться для перехвата запросов, но, похоже, эквивалента для ответов не существует.В идеале я хотел бы иметь возможность перехватывать ответ непосредственно перед его отправкой по проводам, напримеркогда возвращается базовый сервисный метод.Есть какие-нибудь предложения?

Это было полезно?

Решение

Обратите внимание, что если вы хотите перехватить необработанное сообщение, а не параметры, вы можете внедрить свою реализацию IDispatchMessageInspector Идентификатор запроса сообщений вместо точки расширения IParameterInspector, которую предлагает Дэни.

Другие советы

В WCF есть такая технология:вы создаете инструментальный атрибут Operationattribute, который является производным от атрибута IOperationBehavior.

Внутри вас реализуется:

public void ApplyDispatchBehavior(

   OperationDescription operationDescription,

   DispatchOperation dispatchOperation

   )
{

  dispatchOperation.ParameterInspectors.Add(

     new ServerPI()

     );

}

и класс ServerPI() - это то, что делает магию:вы делаете все, что вам нужно, в методах beforecall и aftercall:

  class ServerPI : IParameterInspector
  {

    public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
    {
      Guid result = (Guid)correlationState;
      // ...
    }

    public object BeforeCall(string operationName, object[] inputs)
    {
      string parameter1 = inputs[0] as string;
      return Guid.NewGuid();
    }

  }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top