2013-09-26 22 views
10

MVC 5 uygulamasında HandleErrorAttribute özelliğini kullanmanın en iyi yolu hakkında bir sorum var. Bildiğimiz gibi, biz böyle küresel filtreler için bu özelliği ekleyebilirsiniz:ASP.NET MVC uygulamasında HandleErrorAttribute kullanımı

filters.Add(new HandleErrorAttribute{View = "Error"}); 

Bu işlenmeyen özel durum uygulamanın herhangi bir düzeyde atılmış her zaman görmek 'Hata' göstermek için uygulamayı içermektedir. Ancak, diğer global yetkilendirme veya eylem filtresinde bir mantık varsa, bu durum istisnai ilk seferde bir istisna oluşturuyorsa, uygulama Hata Görünümüne yeniden yönlendirmeyi deneyin, yine başka bir filtre yeniden çalışmaya başlar ve aynı istisnayı tekrar üretir. Bu döngüden kaçınmak için asp.net uygulamasını sonlandırın. Böyle bir davranışı önlemek için bu HandleErrorAttribute'u kullanmanın en iyi yolu nedir? Teşekkürler!

Düzenleme: Bir sonra ben bu HandleErrorAttribute olağan davranış değildir, bu yüzden özel Yolları kullanmak yalnızca bu döngü benim için olur bulduğumuz bazı hata ayıklama F. E.

{key}/{controller}/{action} 

ve bazı hata filtre mantığı oluştuğunda, ardından uygulama Görünüm Hata yönlendirmek için çalışıyorum, ama yine başka bir filtre mantığı exectue başlar ve ben buna rağmen, {key} rota parametresinde "Hata" değerini görmek Bu istenmeyen davranıştır. Varsayılan yol {controller}/{action} kullandığımda bu olmaz ve tam olarak herhangi bir genel filtre mantığı yürütmeden Hata Görünümü'nü tam olarak alırım.

cevap

9

Sen, bir trycatch içine eylem filtre mantığı sarın ardından catch bloğunun içinde, Error görünümüne yönlendirmek ve Exception geçmelidir.

Diğer bir alternatifiniz de HandleError numaralı hendek atmak ve hata işleminizi yönetmek için Global.asax içindeki Application_Error olayını kullanmaktır. Bu şekilde, hata oluştuğu yerden bağımsız olarak Error eyleminize yönlendirebilirsiniz.

+0

Teşekkürler! Bu güzel bir yaklaşım. – igorGIS

+0

ELMAH kullanımı hakkında ne düşünüyorsunuz? –

+1

@Murali Dürüst olmak gerekirse ELMAH hayranı değilim. – mattytommo