Je viens de rencontrer un problème similaire et aucune des réponses ici ne correspond au problème auquel je suis confronté. Contrairement à la question, cependant, je ne reçois jamais de message disant qu'il y a eu un échec de liaison. Le point d'arrêt ne frappe jamais. J'espère que cela sera utile à quelqu'un à l'avenir se cogner la tête contre le mur avec la WCF.
TL / DR:
Dans le message SOAP, il y avait un enregistrement avec des données incorrectes qui empêchait le point d'arrêt d'être atteint.
Histoire complète:
J'ai un service WCF basé sur WSDL d'une autre équipe. Pas ma définition, pas de contrôle dessus ... Je reçois des messages de cette autre équipe via ce service. Dans mon cas, je reçois des messages, je peux enregistrer le message dans la table du journal des messages dans la base de données (ce qui se produit avant que ma méthode de service ne soit appelée), la méthode de service est apparemment appelée (peut-être que ce n'est pas le cas) et le serveur répond par a 202 Accepté. La communication fonctionne, sauf qu'aucune donnée n'est enregistrée dans la base de données lors de l'appel de méthode.
Étant donné que le service renvoie une réponse réussie, j'ai exclu les problèmes liés à http et au transport.
J'ai donc lancé VS2015 pour déboguer le service. Le message en question est large mais bien dans les limites de ce à quoi je m'attendais. J'ai mis un point d'arrêt sur la première ligne de la méthode de service et envoyé le gros message, mais le point d'arrêt n'a jamais atteint. J'ai essayé un message plus petit dont je savais qu'il fonctionnait sur la même instance d'exécution et le point d'arrêt a été atteint très bien. Donc, tout dans la configuration semblait bien. J'ai pensé qu'il y avait peut-être quelque chose dans la taille du message.
J'ai essayé tout ce que je pouvais trouver - m'assurer que j'étais dans une configuration de débogage, nettoyer et reconstruire, attacher manuellement le débogueur au processus w3wp (ce que VS était déjà), en utilisant Debugger.Break()
au lieu d'un point d'arrêt, en définissant plusieurs projets de démarrage, en déchargeant mon projet de test afin que le projet de service soit le seul, mettre à jour .NET, redémarrer VS2015, redémarrer, passer d'IIS local à IIS Express et inversement, recréer le service avec le dernier WSDL garanti. Rien n'avait d'importance. Le point d'arrêt n'a jamais été atteint.
J'ai fini par avoir à éliminer les enregistrements du gros message un par un jusqu'à ce que je trouve un seul enregistrement contenant des données incorrectes. Dans mon cas, c'était un enregistrement qui n'avait aucune valeur pour 2 champs DateHeure. Lorsque j'ai créé un message contenant uniquement cet enregistrement et que je l'ai envoyé, le point d'arrêt n'a pas été atteint. Lorsque j'ai fourni des valeurs pour ces 2 champs DateTime et envoyé le même message (fixe) dans le point d'arrêt déclenché comme prévu.
J'avais toutes les exceptions CLR activées, rien d'autre que des fichiers .pbd manquants, dont je ne me souciais pas. WCF a volontiers envoyé la demande avec un mauvais enregistrement. Je ne dis pas que WCF n'aurait pas dû l'envoyer en fonction des contrats, mais simplement que le mauvais bilan a empêché le point d'arrêt d'être atteint.