Ben de benzer bir problemle karşılaştım ve buradaki cevapların hiçbiri karşılaştığım soruna çarpmadı. Ancak sorunun aksine, bağlanmada başarısızlık olduğunu söyleyen bir mesaj almadım. Kesme noktası asla çarpmaz. Umarım bu gelecekte WCF ile duvara kafa vurarak birisi için yararlıdır.
TL / DR:
SOAP mesajında kesme noktasının isabet almamasına neden olan kötü veriler içeren bir kayıt vardı.
Tüm hikaye:
Başka bir ekibin WSDL tabanlı bir WCF hizmetim var. Tanýmým deđil, üzerinde kontrol yok ... Bu servisle bu ekipten mesajlar alýyorum. Benim durumumda, iletileri alırım, veritabanındaki ileti günlüğü tablosuna (hizmet yöntemimin çağrılmasından önce gerçekleşir) iletiyi kaydedebilirim, hizmet yöntemi görünüşte çağrılır (belki de değildir) ve sunucu yanıt verir a 202 Kabul edildi. Yöntem çağrısı sırasında veritabanına hiçbir veri kaydedilmemesi dışında iletişim çalışıyor.
Hizmet bir başarı yanıtı döndürdüğü için http ve ulaşımla ilgili sorunları dışladım.
Bu yüzden hizmet hata ayıklamak için VS2015 ateş etti. Söz konusu mesaj büyük ama beklediğim sınırlar içinde. Hizmet yönteminin ilk satırına bir kesme noktası koydum ve büyük iletiyi gönderdim, ancak kesme noktası hiçbir zaman çarpmadı. Aynı çalışma örneğinde çalıştığını bildiğim daha küçük bir mesaj denedim ve kesme noktasına iyice çarptı. Yani yapılandırmadaki her şey iyi görünüyordu. Belki mesaj boyutunda bir şey olduğunu düşündüm.
Bulabildiğim her şeyi denedim - bir hata ayıklama yapılandırmasında bulunduğumdan, temizleyip yeniden oluşturduğumdan emin olarak, hata ayıklayıcıyı w3wp işlemine manuel olarak ekleyerek (VS zaten vardı), Debugger.Break()
bir kesme noktası yerine kullanarak , birden fazla başlangıç projesi ayarlayarak, test projemi yükleyerek hizmet projesi .NET'i güncelleştirmek, VS2015'i yeniden başlatmak, yeniden başlatmak, Yerel IIS'den IIS Express'e geçmek ve geri dönmek, hizmeti en son garantili WSDL ile yeniden oluşturmak için tek proje oldu. Hiçbir şey önemli değildi. Kırılma noktasına hiç çarpılmadı.
Kötü veriye sahip tek bir kayıt bulana kadar büyük mesajdaki kayıtları tek tek kaldırmak zorunda kaldım. Benim durumumda, 2 DateTime alanı için değeri olmayan bir kayıttı. İçinde sadece bu kaydı olan bir mesaj oluşturup gönderdiğimde, kırılma noktası isabet etmedi. Ben bu 2 DateTime alanları için değerler sağladı ve aynı (sabit) iletiyi beklendiği gibi tetiklendi.
Etkinleştirilmiş her CLR istisnası vardı, umurumda değildi .pbd dosyaları eksik dışında hiçbir şey ateş. WCF, isteği kötü bir kayıtla mutlu bir şekilde gönderdi. WCF'nin sözleşmelere dayanarak göndermemesi gerektiğini söylemiyorum, sadece kötü kayıt kesme noktasının vurulmamasına neden oldu.