Я просто зіткнувся з подібною проблемою, і жодна з відповідей тут не потрапила на питання, з яким я стикався. На відміну від питання, однак, я ніколи не отримую жодного повідомлення про те, що відбулося невдале прив'язування. Точка розриву просто ніколи не потрапляє. Сподіваємось, це корисно, щоб хтось у майбутньому стукав головою об стіну WCF.
TL / DR:
У повідомленні SOAP з'явився запис із поганими даними, які спричинили, що точка перелому не потрапила.
Повна історія:
У мене є служба WCF на базі WSDL від іншої команди. Не моє визначення, ніякого контролю над цим ... Я отримую повідомлення від іншої команди через цю службу. У моєму випадку я отримую повідомлення, можу записати повідомлення до таблиці журналу повідомлень у базі даних (що відбувається до виклику мого методу обслуговування), спосіб обслуговування, схоже, викликається (можливо, це не так), і сервер відповідає a 202 Прийнято. Зв'язок працює, за винятком того, що дані не зберігаються в базі даних під час виклику методу.
Оскільки сервіс повертає відповідь про успіх, я виключив проблеми http та транспортних послуг.
Тому я запустив VS2015 для налагодження служби. Повідомлення, про яке йдеться, велике, але в межах того, що я очікував. Я поставив точку перерви в перший рядок методу обслуговування і надіслав велике повідомлення наскрізь, але точка зламу так і не потрапила. Я спробував менше повідомлення, яке знав, що працював над тим самим екземпляром запуску, і точка зламу була вдалою. Тож все в конфігурації здавалося прекрасним. Я думав, може, щось було в розмірі повідомлення.
Я спробував усе, що міг знайти - переконайтесь, що перебуваю у налаштуваннях налагодження, очищаю та відновлюю, вручну приєднуючи налагоджувач до процесу w3wp (який VS вже був), використовуючи Debugger.Break()
замість точки розриву, встановлюючи кілька проектів запуску, вивантажуючи мій тестовий проект щоб проект сервісу був єдиним, оновив .NET, перезапустив VS2015, перезавантажив, перейшов з Local IIS на IIS Express і назад, відтворив послугу із гарантованим останнім WSDL. Нічого не мало значення. Точка розриву так і не потрапила.
Мені в кінцевому підсумку довелося викреслити записи у великому повідомленні по одному, поки я не знайшов одного єдиного запису, який мав погані дані. У моєму випадку це був один запис, який не мав значення для 2 полів DateTime. Коли я створив повідомлення, яке містило саме цей запис у ньому, і надіслав його, точка розриву не потрапила. Коли я вказав значення для цих 2 полів DateTime і надіслав те саме (фіксоване) повідомлення в точці розриву, як і очікувалося.
У мене було включено кожне виключення CLR, нічого, крім помилки .pbd-файлів, що не було. WCF із задоволенням надіслав запит із поганим записом. Я не кажу, що WCF не повинен був надсилати це на підставі контрактів, просто те, що поганий запис призвів до того, що точка перелому не потрапила.