Me encontré con un problema similar y ninguna de las respuestas aquí golpeó el problema que estaba enfrentando. Sin embargo, a diferencia de la pregunta, nunca recibo ningún mensaje que diga que hubo un error al vincular. El punto de quiebre nunca llega. Esperemos que esto sea útil para alguien en el futuro golpeándose la cabeza contra la pared con WCF.
TL / DR:
en el mensaje SOAP había un registro con datos incorrectos que hacía que no se golpeara el punto de interrupción.
Historia completa:
Tengo un servicio WCF basado en WSDL de otro equipo. No es mi definición, no tengo control sobre ella ... Recibo mensajes de este otro equipo a través de este servicio. En mi caso, recibo mensajes, puedo registrar el mensaje en la tabla de registro de mensajes en la base de datos (lo que ocurre antes de que se llame a mi método de servicio), aparentemente se llama al método de servicio (tal vez no), y el servidor responde con a 202 aceptado. La comunicación funciona, excepto que no se guardan datos en la base de datos durante la llamada al método.
Como el servicio devuelve una respuesta exitosa, descarté problemas relacionados con http y transporte.
Así que encendí VS2015 para depurar el servicio. El mensaje en cuestión es amplio pero está dentro de los límites de lo que esperaría. Puse un punto de interrupción en la primera línea del método de servicio y envié el mensaje grande, pero el punto de interrupción nunca llegó. Intenté un mensaje más pequeño que sabía que funcionaba en la misma instancia de ejecución y el punto de interrupción fue alcanzado. Así que todo en la configuración parecía estar bien. Pensé que tal vez había algo en el tamaño del mensaje.
Intenté todo lo que pude encontrar, asegurándome de estar en una configuración de depuración, limpiar y reconstruir, adjuntando manualmente el depurador al proceso w3wp (que VS ya estaba), usando en Debugger.Break()
lugar de un punto de interrupción, configurando múltiples proyectos de inicio, descargando mi proyecto de prueba para que el proyecto de servicio fuera el único, actualizando .NET, reiniciando VS2015, reiniciando, cambiando de IIS local a IIS Express y viceversa, recreando el servicio con el último WSDL garantizado. Nada importaba. El punto de quiebre nunca fue alcanzado.
Terminé teniendo que eliminar registros en el mensaje grande uno por uno hasta que encontré un único registro que tenía datos incorrectos. En mi caso, era un registro que no tenía valor para 2 campos DateTime. Cuando creé un mensaje que tenía solo este registro y lo envié, el punto de interrupción no fue alcanzado. Cuando proporcioné valores para esos 2 campos DateTime y envié el mismo mensaje (fijo) en el punto de interrupción disparado como se esperaba.
Tenía todas las excepciones CLR habilitadas, nada más que faltan archivos .pbd faltantes, lo que no me importaba. WCF felizmente envió la solicitud con un mal registro. No estoy diciendo que WCF no debería haberlo enviado en función de los contratos, solo que el mal registro hizo que no se alcanzara el punto de ruptura.