Aracılığıyla paylaş


WCF Hata İşleme

WCF uygulaması tarafından karşılaşılan hatalar üç gruptan birine aittir:

  1. İletişim Hataları

  2. Ara Sunucu/Kanal Hataları

  3. 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, CommunicationException veya CommunicationException'den türetilmiş sınıflar olarak 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 istemci as-is 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 FaultException olarak veya FaultException<TDetail> olarak istemciye gönderilir.

WCF'de hata işleme aşağıdakilerden biri veya daha fazlası tarafından gerçekleştirilir:

  • Atılan istisnai durumu doğrudan ele alma. Bu yalnızca iletişim ve ara sunucu/kanal hataları için yapılır.

  • Hata sözleşmelerini kullanma

  • IErrorHandler arabirimini uygulama

  • Olayları yönetme 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 kontrol sağlar ve günlüğe kaydetme gibi özel hata işleme işlemlerini gerçekleştirmenize olanak tanır. IErrorHandler ve Hata İşleme ve Raporlama Üzerinde Denetimi Artırma hakkında 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:

  1. Faulted

  2. UnknownMessageReceived

Daha fazla bilgi için bkz. ServiceHost