Как перехватить пост-десериализованный объект запроса в WCF - PullRequest
3 голосов
/ 29 июня 2011

Мне нужно перехватить запросы WCF для всех наших веб-сервисов. Все сервисы следуют строгой модели, в которой операции должны принимать один запрос, который расширяет наш базовый тип запроса. Этот базовый тип запроса содержит атрибуты, которые нам нужны для поддержки различных уровней системы, настраиваемое ведение журнала - одно, но есть много других. Я надеялся использовать IDispatchMessageInspector, но я не понимаю, как я могу получить объект запроса из «сообщения», не создавая копию тела. Мне нужно, чтобы это было эффективно, поэтому создание двух копий для каждого запроса не приведет к сокращению.

Я знаю, что могу создавать прокси с System.Reflection.Emit, но это будет смешиваться с активацией сервисов и фабриками ... я надеялся на что-то более доступное, например, как перехватчики CXF работают для Java.

Могу ли я в любом случае перехватить фактический единственный экземпляр запроса на сервере, непосредственно перед отправкой в ​​службу impl?

1 Ответ

5 голосов
/ 29 июня 2011

Инспектор сообщений для работы с сообщениями не с параметрами. Для работы с десериализованными объектами необходим инспектор параметров (реализует IParameterInspector ).

...