2013-04-05 2 views
2

Я хотел бы контролировать порядок запуска фильтров, возможно ли это?Как я могу заказать атрибуты пользовательского фильтра

[LogRequestFilterAttribute] 
[ApiKeyRequestFilterAttribute] 

Я всегда хочу сначала запросить запрос, затем проверить безопасность, возможно ли это? Свойство Priority, похоже, связано с выполнением до/после глобальных фильтров.

Спасибо, Стивена

+0

Это ASP.NET MVC? Это ваши пользовательские фильтры, которые поставляются из ActionFilterAttribute (FilterAttribute)? Если да - вы можете использовать свойство Order на них http://msdn.microsoft.com/en-us/library/system.web.mvc.filterattribute.order(v=vs.100).aspx – outcoldman

+1

Нет, просто равнина веб-проект asp.net для веб-браузинга vanilla, загруженный сервисом ServiceStack –

ответ

2

Request and Response filter attributes имеет Priority свойства, которое можно переопределить, что позволяет указать порядок сортировки, на которых увольняют фильтры.

Это последовательность событий с момента, когда первый фильтр выполнен из Order of Operations wiki page ServiceStack в:

... 

    5. Request Filter Attributes with Priority < 0 gets executed 
    6. Then any Global Request Filters get executed 
    7. Followed by Request Filter Attributes with Priority >= 0 
    8. Action Request Filters (New API only) 
    9. Then your Service is executed with the configured IServiceRunner and its 
    OnBeforeExecute, OnAfterExecute and HandleException custom hooks are fired 
    10. Action Response Filters (New API only) 
    11. Followed by Response Filter Attributes with Priority < 0 
    12. Then Global Response Filters 
    13. Followed by Response Filter Attributes with Priority >= 0 

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

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