Acabei de encontrar um problema semelhante e nenhuma das respostas aqui foi encontrada sobre o problema que estava enfrentando. Ao contrário da pergunta, porém, nunca recebo nenhuma mensagem dizendo que houve uma falha no vínculo. O ponto de interrupção nunca chega. Espero que isso seja útil para alguém no futuro batendo a cabeça na parede com o WCF.
TL / DR:
Na mensagem SOAP, houve um registro com dados incorretos, causando o ponto de interrupção não ser atingido.
História completa:
Eu tenho um serviço WCF baseado no WSDL de outra equipe. Não é minha definição, não tenho controle sobre isso ... Recebo mensagens dessa outra equipe por meio deste serviço. No meu caso, recebo mensagens, posso registrar a mensagem na tabela de log de mensagens no banco de dados (o que acontece antes da chamada do meu método de serviço), o método do serviço é aparentemente chamado (talvez não seja) e o servidor responde com a 202 Aceito. A comunicação está funcionando, exceto que nenhum dado é salvo no banco de dados durante a chamada do método.
Como o serviço retorna uma resposta bem-sucedida, excluí questões relacionadas a http e transporte.
Então, iniciei o VS2015 para depurar o serviço. A mensagem em questão é grande, mas está dentro dos limites do que eu esperaria. Coloquei um ponto de interrupção na primeira linha do método de serviço e enviei a mensagem grande, mas o ponto de interrupção nunca foi atingido. Tentei uma mensagem menor que sabia funcionar na mesma instância de execução e o ponto de interrupção foi atingido perfeitamente. Então, tudo na configuração parecia bem. Eu pensei que talvez houvesse algo no tamanho da mensagem.
Eu tentei tudo o que pude encontrar - certificando-me de que estava em uma configuração de depuração, limpo e reconstruído, anexando manualmente o depurador ao processo w3wp (que o VS já estava), usando em Debugger.Break()
vez de um ponto de interrupção, definindo vários projetos de inicialização, descarregando meu projeto de teste para que o projeto de serviço fosse o único, atualizando o .NET, reiniciando o VS2015, reiniciando, alternando do IIS local para o IIS Express e vice-versa, recriando o serviço com o WSDL mais recente garantido. Nada importava. O ponto de interrupção nunca foi atingido.
Acabei tendo que eliminar registros da mensagem grande, um por um, até encontrar um único registro com dados incorretos. No meu caso, era um registro que não tinha valor para 2 campos DateTime. Quando criei uma mensagem que continha apenas este registro e a enviei, o ponto de interrupção não foi atingido. Quando forneci valores para esses 2 campos DateTime e enviei a mesma mensagem (fixa) no ponto de interrupção, disparada conforme o esperado.
Eu tinha todas as exceções CLR ativadas, nada foi acionado além de arquivos .pbd ausentes, dos quais não me importava. O WCF felizmente enviou a solicitação com um registro ruim. Não estou dizendo que o WCF não deveria ter enviado com base nos contratos, apenas que o registro ruim fez com que o ponto de interrupção não fosse atingido.