asp.net mvc3'te, yetkilendirme filtreleri, sonradan değil, model bağlamadan önce yürütülür (aşağıdaki kod).
Model bağlama, filtrelerden önce gerçekleşir çünkü ActionExecutingContext (IActionFilter.OnActionExecuting parametresi) eylemin parametrelerini içerir. Belki de bu parametreleri tembelce yüklemiş olmalılar.
Aşağıdaki kod System.Web.Mvc.ControllerActionInvoker öğesinden alınmıştır.
public virtual bool InvokeAction(ControllerContext controllerContext, string actionName)
{
// code removed for brevity
try
{
// Notice the authorization filters are invoked before model binding
AuthorizationContext authContext = InvokeAuthorizationFilters(controllerContext, filterInfo.AuthorizationFilters, actionDescriptor);
if (authContext.Result != null) {
// the auth filter signaled that we should let it short-circuit the request
InvokeActionResult(controllerContext, authContext.Result);
}
else {
if (controllerContext.Controller.ValidateRequest) {
ValidateRequest(controllerContext);
}
// GetParameterValues does the model binding
IDictionary<string, object> parameters = GetParameterValues(controllerContext, actionDescriptor);
ActionExecutedContext postActionContext = InvokeActionMethodWithFilters(controllerContext, filterInfo.ActionFilters, actionDescriptor, parameters);
InvokeActionResultWithFilters(controllerContext, filterInfo.ResultFilters, postActionContext.Result);
}
}
// code removed for brevity
}