2010-01-11 3 views
1

У меня есть веб-сервис WCF, на самом деле есть несколько веб-сервисов, все используют net.tcp и размещаются в IIS через WAS. Несколько клиентов называют эти службы, все они известны, но не могут контролироваться (то есть я не могу изменить их код, и поэтому я не могу изменить службы). Некоторые из этих клиентов не очень хорошо относятся к сервису и вызывают много ошибок, и я хотел бы узнать, какие из них проблематичны. Я не могу посмотреть учетные данные, переданные, поскольку они не используют аутентификацию, я не могу использовать ip/port, поскольку все они происходят из одного и того же места. Теперь моя задача - найти способ различения этих клиентов, например, просмотрев вызывающую сборку или что-то в удаленной системе, которая идентифицирует клиента. Кто-нибудь знает какую-либо такую ​​информацию? У меня есть доступ к журналу IIS, средству просмотра событий, файлам трассировки и их услугам (я могу поместить что-нибудь в код, который не прерывает нормальный поток).Запись информации о клиенте, отправляющем запросы в WCF (WAS) webservice

ответ

0

Кажется, что ваша проблема связана не с механизмом регистрации; это с поиском способа отличить клиентов.

Если вы не можете контролировать код клиентов, можете ли вы хотя бы изменить URL-адрес, который они используют для конечной точки? Если это так, то я рекомендую вам разоблачить услугу на нескольких адресах конечных точек, а затем каждый клиент использует уникальный адрес. Затем адрес будет выступать в качестве прокси для клиента.

+0

Вы абсолютно правы. Единственное, что я действительно контролирую на клиенте, - это web.config/app.config и что-то сделать с URL-адресом, возможно, будет возможно. Интересно, могу ли я каким-то образом вставить что-то в сам URL-адрес, который не меняет адрес службы, но все равно передается на сервер ... – dphreak

+0

Основываясь на вашей идее, я придумал решение. После URL-адреса службы я добавляю? Client = something в web/app.config. Это абсолютно ничего не значит для сервиса, но оно включено в сервисные трассы. Простой и эффективный, и он не требует каких-либо изменений в фактическом коде. – dphreak

1

Вы можете написать какое-либо пользовательское поведение для проверки полученных сообщений службы; образец можно найти здесь: Writing a WCF Message Inspector и Simple WCF Service Behavior: Inspect Messages Through Debug Output

+0

Там, кажется, ничего нет на объекте сообщения, который отличает клиента ... – dphreak

2

Заканчивать ФОС встроенные регистрации и механизмы отслеживания:

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

+0

Что именно в messeges показывает, откуда они пришли? Я пробовал отслеживать «подробный, activitytracing», но это ничего не говорит о клиенте, только метод, называемый, ответы и т. Д. – dphreak

Смежные вопросы