#c# #wcf #rest
#c# #wcf #rest
Вопрос:
Я новичок в WCF. У меня есть служба WCF REST, которая использует ServiceAuthorizationManager. Требуется протоколировать запрос, полученный от клиентов, в таблицу в БД. Где это должно произойти, я имею в виду в AuthorizationManager, который реализует ServiceAuthorizationManager? и как собрать всю информацию, такую как IP-адрес клиента, заголовки авторизации, переданные клиентом, чтобы я мог заполнить объект и вызвать db в Application_EndRequest класса Global.asax.
Пожалуйста, посоветуйте.
Спасибо, Раджу
Комментарии:
1. вы размещаете службу в IIS?
Ответ №1:
Рассмотрите возможность добавления инспектора сообщений в вашу службу. Я нашел эту ссылку, которая может быть полезной: Инспектор сообщений WCF REST
В AfterReceiveRequest
методе вы можете извлекать информацию заголовка и т.д. Из заголовка запроса.
Реализуйте свою логику в BeforeSendReply
вместо в Application_EndRequest
.
Комментарии:
1. Я не нахожу, что AfterReceiveRequest является адекватным. Я получаю сообщение об ошибке при разборе ошибок в возвращенном сообщении, и это происходит до вызова AfterReceiveRequest, что делает это бесполезным для фактического устранения неполадок.
Ответ №2:
Если вы размещаете свою службу в IIS 7 , более простым способом было бы настроить AppFabric и включить сквозной мониторинг для этой службы, а не запускать свой собственный. Вот сообщение в блоге, в котором показан пример сервиса и конфигурация, необходимая для его работы.
Если вы решите использовать маршрут ServiceAuthorizationManager, ознакомьтесь с этой статьей MSDN об использовании этого класса. Показано, как переопределить метод CheckAccessCore и извлечь заголовки сообщений и т.д. Именно здесь вы могли бы реализовать вызов для регистрации запроса, если авторизация прошла успешно.