Фильтры стиля MVC в веб-службах ASMX, возможно ли это?

Можно ли создать атрибуты фильтра в стиле MVC (например, Authorize или HandleError), которые работают с веб-службами ASMX?

В частности, я выполняю пользовательскую аутентификацию для ряда своих веб-методов и хотел бы обернуть код в атрибут, который выдает исключение, если проверка аутентификации не удалась.

Богатый


person kim3er    schedule 02.10.2009    source источник


Ответы (2)


Поскольку ASMX также является сервером конвейера ASP.NET, вы можете просто использовать HttpModules, которые дают вам большой контроль над входом и выходом.

Вот ссылка и пример: http://msdn.microsoft.com/en-us/library/aa719858(VS.71).aspx

Если вы хотите сделать его очень похожим на MVC, вы должны написать собственный http-модуль, который проверяет веб-сервис на наличие таких атрибутов, как [Authorize] и т. д. Поскольку ASP.NET MVC является открытым исходным кодом, вы можете просто использовать его части как укажите, как они проверяют атрибуты и т. д., а затем встройте их в свой HTTPModule.

ХТН Алекс

person Alex Duggleby    schedule 02.10.2009
comment
Ты уверен насчет этого? По крайней мере, некоторые события не запускаются для веб-службы. Например, вы не можете использовать HttpModule для глобальной обработки исключений в веб-службе. - person John Saunders; 02.10.2009

Вы можете имитировать некоторые эффекты. Помня, что веб-службы ASMX просто обертывают любой общедоступный метод, вы можете использовать такие вещи, как PrincipalPermissionAttribute, для защиты своих служб.

person Wyatt Barnett    schedule 02.10.2009