WebApi Aktionsfilter, der zweimal aufgerufen wird

8

Meine WebApi-Filtermethode OnActionExecuted wird zweimal aufgerufen. Mein Filter (ich mache es so einfach wie möglich):

%Vor%

Mein Setup:

%Vor%

Im Debugger fange ich OnActionExecuted zweimal mit der gleichen actionExecutedContext . Warum?

UPD

%Vor%     
Andrew Kalashnikov 28.08.2013, 10:33
quelle

3 Antworten

8

Ich habe den Verdacht, dass dieses seltsame Verhalten durch Überschreiben der AllowMultiple -Eigenschaft des Filters und Zurückgeben von false oder durch das Anwenden des AttributeUsage -Attributs mit AllowMultiple auf false behoben werden kann (dies beeinflusst die Standardimplementierung von%). co_de% Eigenschaft des Filters.

Zumindest in unserem Projekt hat das geholfen (wir haben Filter über Autofac injiziert).

    
Mikhail Brinchuk 11.02.2014 17:52
quelle
2

Dies kann auf eine Registrierung eines benutzerdefinierten Filteranbieters zurückzuführen sein. Wenn Sie dies tun, müssen Sie die Standard Registrierung aufheben. Andernfalls, wenn Sie die üblichen Filter in Ihrem benutzerdefinierten Filter erhalten, werden sie zweimal registriert und folglich zweimal ausgeführt.

Code sollte in etwa so aussehen:

%Vor%

Wie bereits gesagt wurde, ist AllowMultiple auf false ein Hack, da .net clever genug ist, nur einmal einen Filter auszuführen, selbst wenn er mehrmals registriert wurde. Außerdem gibt es Szenarien, in denen dies erforderlich ist, um wahr zu sein.

    
jbernal 15.10.2015 10:11
quelle
2

Für mich hatte ich den Filter zweimal angegeben. In meiner IOC-Konfigurationsdatei hatte ich

%Vor%

Und dann in filterConfig hatte ich

%Vor%

Ich habe die Zeile von filterConfig entfernt und alles war besser.

    
Visser 15.02.2016 20:55
quelle