WCF аудит / регистрация - PullRequest
1 голос
/ 20 июля 2010

Мне нужно предоставить non-repudiation в моих службах WCF и хочу сохранить все мои входящие SOAP-запросы в БД SQL-сервера с данными сигнатуры / безопасности и всем содержимым конверта .

Таким образом, когда возникает проблема, мы можем сказать клиенту " Привет, ЭТО ваше подписанное сообщение " в точности так, как вы его написали . Для этого мне нужно сохранить связь между XML-конвертом SOAP и моими постоянными бизнес-объектами / транзакциями.

Пример: ЭТО - это SOAP-конверт , используемый для добавления ИД клиента = 4567 к данным моих клиентов.

Мне нужно установить связь между конвертом SOAP и бизнес-транзакцией, выполняемой моим приложением. Хранение @@ идентификатора зарегистрированного сообщения могло бы быть решением. Но куда я это положу? В SOAP Body? Хранить в памяти?

Я читал о входе в WCF и написал Database Logger , который вставляет в таблицы информацию журнала вместо текстового файла, но я не знаю, как связать эти данные с разобранным / десериализованным бизнес-объект datacontract, который поступает в метод моей службы WCF. Я даже не знаю, является ли это правильным подходом!

Любой шаблон / совет / подсказка / инструмент / помощь будут оценены. Спасибо.

1 Ответ

0 голосов
/ 22 июля 2010

Если вы включили функцию регистрации сообщений WCF (http://msdn.microsoft.com/en-us/library/ms730064.aspx),, вы можете написать собственный слушатель и добавить туда всю необходимую логику. Чтобы написать собственный слушатель, вам нужно только реализовать интерфейс TraceListener довольно просто), а затем настройте WCF для его использования, добавив его в раздел слушателей в system.diagnostics, заменив прослушиватель по умолчанию.

...