Как я могу добавить заголовок / datamember ко всем DataContracts в службе WCF? - PullRequest
1 голос
/ 17 марта 2011

Я хочу расширить существующие сервисы и добавить авторизацию для каждого звонка. Проблема в том, что я не знаю, как это сделать наилучшим образом. Что мне нужно сделать, это отправить имя модуля, вызывающего службу WCF. Я уже отправил имя пользователя и пароль для сервиса, и теперь мне нужно дополнить его названием модуля, вызывающего сервис. Это потому, что мы можем позволить пользователю открывать модуль и отображать данные из другого модуля, но не из третьего.

Если бы мы использовали контракты на сообщения, я бы просто добавил для этого MessageHeader и установил этот заголовок при создании запроса. К сожалению, это не вариант с DataContracts, поэтому я рассматривал следующие две альтернативы.

Добавление DataMember в базовый класс с Order = 1000 или что-то в этом роде. Я не знаю, что произойдет, если мы добавим еще один DataMember до этого, хотя?

Создайте свойство для имени модуля и установите вместо него заголовок в транспорте. Не очень люблю этот, хотя. Это довольно абстрактно, и за ним трудно следовать.

Какой из них наименее злой или у вас есть лучшее предложение?

РЕДАКТ. 1: Проблема не в том, как отправить заголовок службе, а в том, как отправить заголовок с определенным значением на сервер. В инспекторе сообщений я могу создавать только общие экземпляры с message.GetBody<DataContract>();, это означает, что я должен знать тип, который я не знаю, как.

РЕДАКТИРОВАТЬ 2: Проблема заключается в том, что в нашем приложении мы хотим ограничить доступ к вызову на основе того, откуда был сделан вызов, поэтому мне нужно передать эту информацию. Допустим, я выполняю вызов MyService из FindUserModule, затем мне нужно добавить идентификатор этого модуля в заголовок, чтобы AuthorizationManager мог проверить, действительно ли этот пользователь должен быть авторизован. Это связано с тем, что сервисные вызовы используются из многих модулей.

1 Ответ

1 голос
/ 17 марта 2011

Обрабатывать это как заголовок SOAP в Инспектор пользовательских сообщений .

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