WCF с использованием блока приложения проверки библиотеки предприятия - как получить недействительные сообщения? - PullRequest
2 голосов
/ 20 августа 2009

У меня есть несколько служб WCF (размещенных в IIS 6), которые используют блок приложения проверки библиотеки Enterprise Library (4.0). Если клиент отправляет сообщение, которое не проходит проверку (то есть возвращается в исключении ValidationFault), я бы очень хотел иметь возможность записать XML-сообщение в каком-либо месте (используя код, без журналов IIS). Вся проверка происходит до того, как код реализации службы вступит в силу.

Я уверен, что можно настроить какой-то класс для запуска до реализации сервиса (предположительно, так работает блок приложения проверки), но я не могу вспомнить, как или как именно определить, что искать.

Можно ли создать класс и связанную с ним конфигурацию, которая предоставит мне доступ либо ко всему сообщению запроса SOAP, либо по крайней мере к телу сообщения?

Ответы [ 3 ]

1 голос
/ 20 августа 2009

Взгляните на использование блока приложения внедрения политики ...

В настоящее время я разрабатываю приложение, в котором я перехватываю (используя PIAB) все запросы, поступающие на сервер, и на основе типа запроса я применяю различные способы проверки с использованием VAB.

Вот статья об интеграции PIAB с WCF:

http://msdn.microsoft.com/en-us/magazine/cc136759.aspx

Вы можете создавать различные механизмы восприятия, такие как атрибуты, применяемые к открытым операциям.

0 голосов
/ 21 августа 2009

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

IDispatchMessageInspector также дает вам метод BeforeSendReply, чтобы вы могли регистрировать (или изменять) ваше ответное сообщение.

Теперь, когда клиенты пытаются буквально вручную обработать сообщения-запросы SOAP (даже не используя какой-либо объект DOM) для наших служб, у нас есть простое доказательство того, что они отправляют мусор!

0 голосов
/ 20 августа 2009

Вы можете записать все сообщение WCF:

http://msdn.microsoft.com/en-us/library/ms730064.aspx

Или вы можете объединить его с Блоком приложения ведения журнала Enterprise Library.

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