Beklenen Özel Durumlar
ExpectedExceptions örneği, yazılan bir istemci kullanılırken beklenen özel durumların nasıl yakalanacaklarını gösterir. Bu örnek, hesap makinesi hizmeti uygulayan Başlarken'i temel alır. Bu örnekte istemci bir konsol uygulamasıdır (.exe) ve hizmet Internet Information Services (IIS) tarafından barındırılır.
Not
Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.
Bu örnek, doğru programların işlemesi gereken beklenen iki özel durum türünün yakalanmasını ve işlenmesini gösterir: TimeoutException
ve CommunicationException
.
Windows Communication Foundation (WCF) istemcisinde iletişim yöntemlerinden oluşan özel durumlar beklenir veya beklenmeyendir. Beklenmeyen özel durumlar, veya gibi OutOfMemoryException
ArgumentNullException
InvalidOperationException
yıkıcı hataları ve programlama hatalarını içerir. Genellikle beklenmeyen hataları işlemenin kullanışlı bir yolu yoktur, bu nedenle genellikle WCF istemci iletişim yöntemini çağırırken bunları yakalamamalısınız.
WCF istemcisinde iletişim yöntemlerinden beklenen özel durumlar , CommunicationException
ve türetilmiş herhangi bir sınıfıdır.TimeoutException
CommunicationException
Bunlar, iletişim sırasında WCF istemcisini durdurup bir iletişim hatası bildirerek güvenli bir şekilde işlenebilen bir sorunu gösterir. Dış faktörler herhangi bir uygulamada bu hatalara neden olabileceği için, doğru uygulamaların bu özel durumları yakalaması ve oluştuğunda kurtarması gerekir.
İstemcinin CommunicationException
oluşturabileceği çeşitli türetilmiş sınıfları vardır. Bazı durumlarda, uygulamalar özel işleme yapmak için bunlardan bazılarını da yakalar, ancak diğerlerinin olarak CommunicationException
işlenmesine izin verir. Bu, önce daha belirli bir özel durum türünü yakalayıp daha sonraki bir catch-yan tümcesinde yakalayarak CommunicationException
gerçekleştirilebilir.
İstemci iletişim yöntemini çağıran kodun ve CommunicationException
'yi yakalaması TimeoutException
gerekir. Bu tür hataları işlemenin bir yolu, istemciyi durdurmak ve iletişim hatasını bildirmektir.
try
{
...
double result = client.Add(value1, value2);
...
client.Close();
}
catch (TimeoutException exception)
{
Console.WriteLine("Got {0}", exception.GetType());
client.Abort();
}
catch (CommunicationException exception)
{
Console.WriteLine("Got {0}", exception.GetType());
client.Abort();
}
Beklenen bir özel durum oluşursa, istemci daha sonra kullanılabilir olabilir veya olmayabilir. İstemcinin hala kullanılabilir olup olmadığını belirlemek için özelliğinin State
olup CommunicationState
olmadığını denetleyin. Açıldı. Hala açıksa, hala kullanılabilir durumdadır. Aksi takdirde istemciyi durdurmanız ve ona yapılan tüm başvuruları serbest bırakmanız gerekir.
Dikkat
Oturumu olan istemcilerin genellikle bir özel durumdan sonra kullanılamadığını ve oturumu olmayan istemcilerin genellikle bir özel durumdan sonra hala kullanılabilir olduğunu gözlemleyebilirsiniz. Ancak, bunların hiçbiri garanti edilmemektedir, bu nedenle bir özel durumdan sonra istemciyi kullanmaya devam etmek istiyorsanız uygulamanızın istemcinin State
hala açık olduğunu doğrulamak için özelliğini denetlemesi gerekir.
Örneği çalıştırdığınızda, işlem yanıtları ve özel durumlar istemci konsolu penceresinde görüntülenir.
İstemci işlemi iki senaryo çalıştırır ve bunların her biri tarafından çağrılmaya Add
Divide
çalışılır. İlk senaryo, çağrısı yapmadan önce istemciyi durdurarak bir ağ sorununun benzetimini Divide
yapıyor. İkinci senaryo, yöntemin tamamlanması için zaman aşımını çok kısa ayarlayarak zaman aşımı koşuluna neden olur. İstemci işleminden beklenen çıkış:
Add(100,15.99) = 115.99
Simulated network problem occurs...
Got System.ServiceModel.CommunicationObjectAbortedException
Add(100,15.99) = 115.99
Set timeout too short for method to complete...
Got System.TimeoutException
Örneği ayarlamak, derlemek ve çalıştırmak için
Windows Communication Foundation Örnekleri için Tek Seferlik Kurulum Yordamı'nı gerçekleştirdiğinizden emin olun.
Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örnekleri Oluşturma başlığındaki yönergeleri izleyin.
Örneği tek veya makineler arası bir yapılandırmada çalıştırmak için Windows Communication Foundation Örneklerini Çalıştırma başlığındaki yönergeleri izleyin.