Ich habe das folgende Attribut.MVC ActionFilterAttribute feuert die ganze Zeit
ich tun muss:
- Rückkehr eine Nachricht an den Browser in der
filterContext.Result
(ich nehme an, dass Ort, es zu tun) - der Lage sein, eine Aktion zu stoppen
aber nach dem debuggd-Prozess startet der Debugger innerhalb OnActionExecuting
Methode, und ich sehe einen Fehler anstelle meiner Seite. Ich dachte, es wird vor der SearchItems
Methode ausgeführt werden - warum das passiert?
public class MyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
bool isValid = false; //some logic here
if (!isValid)
{
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.PaymentRequired;
filterContext.Result = new EmptyResult();
return;
}
base.OnActionExecuting(filterContext);
}
}
global.asax
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new MyAttribute());
filters.Add(new HandleErrorAttribute());
}
Controller:
public class MainApiController : ApiController
{
[MyAttribute]
[HttpPost]
public HttpResponseMessage SearchItems()
{
...
}
}
Können Sie Ihre Frage umformulieren? Es ist mir überhaupt nicht klar. Dein Code und deine Beschreibung von dem, was passiert, scheinen sich alle aufzurichten. – Igor
Vielleicht hilft das bei der Beantwortung Ihrer Frage? [how-to-skip-action-execution-from-actionfilter] (http://stackoverflow.com/questions/9837180/how-to-skip-action-execution-from-actionfilter) oder dieses http: //stackoverflow.com/questions/16822365/web-api-how-to-stop-the-web-pipeline-directly-from-anonactionexecuting-filter – Igor