W MVC możemy ozdobić metody działania z różnymi filtrami jakW jakiej kolejności są filtry wykonany w ASP.NET MVC
[HttpPost]
[Authorize]
public ActionResult mymethod(){}
HttpPost
wywodzi MethodSelectorAttribute
(prawdopodobnie pośrednio) i atrybut Authorize
dziedziczy ActionFilterAttribute
.
Moje pytanie brzmi: w jakiej kolejności są wykonywane w potoku żądania MVC? Próbowałem wyszukiwać w kodzie źródłowym MVC, ale nie znalazłem odpowiednich bitów kodu.
Przyjęłbym kolejność, w jakiej są zwracane podczas refleksji, na którą może wpłynąć faktyczna kolejność w źródle. –
@ Hasan bhai przede wszystkim miło cię widzieć, to uważam, że HttpPost jest actionmethodSelector (jego metoda isValidForRequest nazywa się) atrybut i Authorize to atrybut actionFilter (jego nazwa to onActionExecuting lub onActionExecuted), więc muszą być wywoływane w różnym czasie. prawdopodobnie HttpPost powinien zostać wywołany przed Authorize, ponieważ są to różne filtry i mają różne obowiązki. –
Wygląda na to, że moje założenie było błędne. Odpowiedź Erangi pokazuje, że Filtry mają mechanizm określający ich kolejność. Jednak ponieważ HttpPost nie jest filtrem, jak się wydaje. Może to wymagać specjalnej obsługi, wykonując ją przed czymkolwiek innym. Znowu jego założenie. –