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