2012-06-19 12 views
11

İstisna filtresini şu şekilde uygulamamıştım: http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling Ve microsoft veya stackoverflow kullanıcıları (How to add global ASP.Net Web Api Filters?) gibi genel olarak kayıtlı.Web API: 'Global' filtre çalışmıyor (ExceptionFilter)

public static void RegisterWebApiFilters(System.Web.Http.Filters.GlobalFilterCollection filters) 
{ 
//other filters 
    filters.Add(new MyExceptionFilter()); 
} 

Ancak bir istisna atarsam, yöntemim çağrılmaz. İstisna işleme yöntemim, yalnızca denetleyici yöntemine [MyExceptionFilter] özniteliğini eklediğimde çağrılır, ancak filtreyi genel olarak kaydederek tüm yöntemler için bunu engelleyebileceğimi umuyorum.

Filtreler için bir sipariş ayarlamayı denedim, ancak bunun bir etkisi yoktu.


Düzenleme: Yeni Wep Api RC yöntemi "RegisterGlobalFilters" denir ve bu MVC filtre toplama gibi görünüyor, fark etmiş.

bunun işe yaradığını

GlobalConfiguration.Configuration.Filters.Add(new MyExceptionFilter()); 

çağırırsanız. Bu, Web Api için koleksiyondur. farklı filtre koleksiyonları vardır: Ben web API için kendi "FilterConfig" sınıfı oluşturmak zorunda gibi Sorumun sözü gibi

...

cevap

16

görünüyor. MVC için bir ve web api için bir tane. Eğer web api'sine filtre eklemek global.asax için

GlobalConfiguration.Configuration.Filters.Add(new MyExceptionFilter()); 
+1

Teşekkür kod satırını eklemek istiyorsanız

, bana doğru yönde işaret etti. Tüm bu küresel filtre koleksiyonları biraz ... ... ve yine de normal denetleyiciler için kayıtlı benim istisna filtresim işe yaramıyor. Grr. –

+1

Evet, bu satır var ama hala bazı durumlarda ateş etmiyor .. Ben hata ayıklayıcıda başlatılan söyleyebiliriz, ama benim web api –

+0

Web istismarında her tetiklenen değil [bu] (http://stackoverflow.com/a/26677989/2944723) benim için çalıştı – tgarcia