Yazdığım bir Windows hizmetinde barındırılan bir WCF Hizmetim var. PerSession modunda çalışmaktadır. Servis, istemcilerin dosya açmasına, dosyalarda değişiklik yapmasına ve dosyaları uzaktan servis yoluyla kapatmasına izin verir. Şimdiye kadar tüm işler çok sorunsuz.WCF Hizmetini sonlandırın - tüm açık oturumları tamamlayın ve yeni oturumları kısıtlayın
Windows hizmeti durdurulduğunda, WCF Hizmeti'nin yeni oturumları kabul etmesini ve bağlanmış istemcilerin geçerli oturumlarını tamamlamasına ve çalışmasına izin vermesini (makul bir süre/zaman aşımı içinde) elde edebilmeyi istiyorum.
Bunu başarmanın en iyi yolu ne olurdu?
serviceHost.Close hizmeti, hizmetimin istemci bağlantılarını derhal kapatmasına neden oluyor. İstediğim düzenli kapatma yok. Bu davranışı değiştiren bazı yapılandırma var mı? –
@David: Hayır, bunu açmak için herhangi bir ayarın farkında değilim - bu varsayılan davranış olmalı - hala devam eden servis çağrıları düzenli olarak tamamlanmalıdır. Ancak, bu, mevcut oturumları bitene kadar açık tutmaz - herhangi bir servis çağrısı yapılmıyorsa kapatılacaklar. –
@marc_s: Gördüğüm şey ServiceHost.Close'un ServiceHost'un devam etmekte olan servis çağrılarını tamamlamasına izin vermesidir - AMA istemcilerim zaten bir System.ServiceModel.CommunicationException aldı ve yanıtı alamadı. Beklediğiniz bu mu? Herhangi bir geçici çözüm var mı? Yeni servis çağrısı yaparken istemciler bir istisna alırsa iyi olur, ancak ServiceHost.Close çağrıldığında çalışan servis çağrıları, beklenen değerleri müşteriye tamamlayıp geri göndermelidir. –