2010-11-03 2 views
0

Мне нужно запустить код, похожий на HTTP-модуль, каждый раз, когда запрос входит в службу WCF. Некоторые примеры кода могут быть аутентификацией, дросселированием, протоколированием и т. Д. Каков наилучший способ выполнения модуля каждый раз, когда выполняется запрос?Как запустить код для каждого запроса на обслуживание?

Редактировать Для разъяснения

Мы будем делать несколько вещей. Прежде всего, нам нужно аутентифицировать все запросы. Каждый запрос потребует от пользователя передачи некоторого набора учетных данных, например, ключа API. Нам нужно проверить правильность ключа, прежде чем разрешить прохождение этого запроса.

Что касается дросселирования, нам нужно ограничить количество запросов, которые может сделать конкретный пользователь. Скажем, 100 в час или что-то подобное.

+0

Пожалуйста, будьте более конкретным, как спрашивает tomasr ниже. WCF очень гибкий - вам нужно будет более четко понять, чего вы пытаетесь достичь. –

ответ

2

В WCF есть несколько точек расширения, которые можно использовать для того, что вы хотите. Однако вам, вероятно, придется использовать разные точки расширения для разных целей.

Например, для регистрации вы можете использовать IDispatchMessageInspector или IParameterInspector. Для обработки ошибок вы можете использовать IErrorHandler.

Дросселирование - это не то, что вы обычно используете для расширений, так как во многих случаях может быть достаточно встроенного throttling settings.

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

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