Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 Getting Started'a dayanmaktadır. Bu örnekte, istemci bir konsol uygulamasıdır (.exe) ve hizmet Internet Information Services (IIS) tarafından barındırılır.
Uyarı
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 atılan özel durumlar, beklenen veya beklenmeyen olabilir. Beklenmeyen özel durumlar, OutOfMemoryException ve programlama hataları gibi yıkıcı hatalar ArgumentNullException veya InvalidOperationException gibi durumlardan oluşur. 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 istemcisindeki iletişim yöntemlerinden beklenen özel durumlar arasında TimeoutException, CommunicationException ve CommunicationException'nin türetilmiş herhangi bir sınıfı bulunmaktadır. 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 CommunicationException olarak işlenmesine izin verir. Bu, önce daha belirli bir özel durum türünü yakalayıp ardından daha sonraki bir catch tümcesinde CommunicationException yakalayarak başarılabilir.
İstemci iletişim yöntemini çağıran kodun ve TimeoutException'yi yakalaması CommunicationException 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 State özelliğinin CommunicationState.Açık durumda olup olmadığını kontrol edin. Hala açıksa, hala kullanılabilir durumdadır. Aksi takdirde istemciyi sonlandırmanız ve ona yapılan tüm referansları serbest bırakmanız gerekir.
Dikkat
Oturumu olan istemciler bir özel durumdan sonra genellikle kullanılamaz hale gelirken, oturumu olmayan istemciler genellikle bir özel durumdan sonra hala kullanılabilir halde kalır. 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 yürütür ve her biri önce Add ardından Divide çağrılmaya çalışır. İlk senaryo, ilgili çağrı yapılmadan önce istemciyi durdurarak ağ sorununu simüle ediyor. İkinci senaryo, zaman aşımı süresini yöntemin tamamlanması için ç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çinOne-Time Kurulum Yordamını yaptığınızdan emin olun.
Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örneklerioluşturma başlığındaki yönergeleri izleyin.
Örneği tek bir makine veya makineler arası bir yapılandırmada çalıştırmak için, Windows Communication Foundation örneklerini çalıştırmayönergelerini izleyin.