WCF Hata İşleme
WCF uygulaması tarafından karşılaşılan hatalar üç gruptan birine aittir:
İletişim Hataları
Ara Sunucu/Kanal Hataları
Uygulama Hataları
Ağ kullanılamıyorsa, istemci yanlış adres kullanıyorsa veya hizmet konağı gelen iletileri dinlemiyorsa iletişim hataları oluşur. Bu türdeki hatalar veya CommunicationExceptiontüretilmiş sınıflar olarak CommunicationException istemciye döndürülür.
Proxy/Kanal hataları, kanalın veya proxy'nin kendi içinde oluşan hatalardır. Bu türdeki hatalar şunlardır: kapatılmış bir ara sunucu veya kanal kullanmaya çalışmak, istemci ile hizmet arasında bir sözleşme uyuşmazlığı var veya istemcinin kimlik bilgileri hizmet tarafından reddedilir. Bu kategoride birçok farklı hata türü var ve burada listelenemeyecek kadar çok. Bu türdeki hatalar istemciye olduğu gibi döndürülür (özel durum nesnelerinde dönüştürme yapılmaz).
Uygulama hataları, bir hizmet işleminin yürütülmesi sırasında oluşur. Bu tür hatalar veya FaultException<TDetail>olarak FaultException istemciye gönderilir.
WCF'de hata işleme aşağıdakilerden biri veya daha fazlası tarafından gerçekleştirilir:
Oluşan özel durumu doğrudan işleme. Bu yalnızca iletişim ve ara sunucu/kanal hataları için yapılır.
Hata sözleşmelerini kullanma
Arabirimi uygulama IErrorHandler
Olayları işleme ServiceHost
Hata Sözleşmeleri
Hata sözleşmeleri, hizmet işlemi sırasında oluşabilecek hataları platformdan bağımsız bir şekilde tanımlamanızı sağlar. Varsayılan olarak, bir hizmet işleminin içinden atılan tüm özel durumlar istemciye nesne FaultException olarak döndürülür. Nesne FaultException çok az bilgi içerir. Bir hata sözleşmesi tanımlayıp hatayı olarak FaultException<TDetail>döndürerek istemciye gönderilen bilgileri denetleyebilirsiniz. Daha fazla bilgi için bkz . Sözleşmelerde ve Hizmetlerde Hataları Belirtme ve İşleme.
Ierrorhandler
Arabirim, IErrorHandler WCF uygulamanızın hatalara nasıl yanıt verdiği üzerinde daha fazla denetim sahibi olmanıza olanak tanır. İstemciye döndürülen hata iletisi üzerinde tam denetim sağlar ve günlüğe kaydetme gibi özel hata işleme gerçekleştirmenize olanak tanır. Hata İşleme ve Raporlama Üzerinde Denetimi Genişletme hakkında IErrorHandler daha fazla bilgi için
ServiceHost Olayları
ServiceHost sınıfı hizmetleri barındırıyor ve hataları işlemek için gerekli olabilecek çeşitli olayları tanımlıyor. Örneğin:
Daha fazla bilgi için bkz. ServiceHost.