Tôi chỉ gặp phải một vấn đề tương tự và không có câu trả lời nào ở đây đánh vào vấn đề mà tôi đang đối mặt. Tuy nhiên, không giống như trong câu hỏi, tôi không bao giờ nhận được bất kỳ tin nhắn nào nói rằng không có sự ràng buộc nào. Điểm dừng không bao giờ đánh. Hy vọng rằng điều này hữu ích cho ai đó trong tương lai đập đầu vào tường với WCF.
TL / DR:
Trong thông báo SOAP có một bản ghi với dữ liệu xấu khiến điểm dừng không bị ảnh hưởng.
Toàn bộ câu chuyện:
Tôi có dịch vụ WCF dựa trên WSDL từ một nhóm khác. Không phải định nghĩa của tôi, không kiểm soát nó ... Tôi nhận được tin nhắn từ nhóm khác thông qua dịch vụ này. Trong trường hợp của tôi, tôi nhận được tin nhắn, có thể ghi thông báo vào bảng nhật ký tin nhắn trong cơ sở dữ liệu (xảy ra trước khi phương thức dịch vụ của tôi được gọi), phương thức dịch vụ dường như được gọi (có thể không phải vậy) và máy chủ phản hồi 202 được chấp nhận. Truyền thông đang hoạt động, ngoại trừ không có dữ liệu nào được lưu vào cơ sở dữ liệu trong khi gọi phương thức.
Vì dịch vụ trả về phản hồi thành công nên tôi loại trừ các vấn đề liên quan đến vận chuyển và http.
Vì vậy, tôi đã kích hoạt VS2015 để gỡ lỗi dịch vụ. Thông điệp trong câu hỏi là lớn nhưng cũng trong giới hạn của những gì tôi mong đợi. Tôi đặt một điểm dừng trên dòng đầu tiên của phương thức dịch vụ và gửi thông điệp lớn qua, nhưng điểm dừng không bao giờ đạt được. Tôi đã thử một tin nhắn nhỏ hơn mà tôi biết đã hoạt động trên cùng một ví dụ chạy và điểm dừng đã được xử lý tốt. Vì vậy, mọi thứ trong cấu hình có vẻ tốt. Tôi nghĩ có lẽ có một cái gì đó trong kích thước tin nhắn.
Tôi đã thử mọi thứ tôi có thể tìm thấy - đảm bảo rằng tôi đang ở trong cấu hình gỡ lỗi, dọn dẹp và xây dựng lại, đính kèm trình gỡ lỗi theo cách thủ công vào quy trình w3wp (mà VS đã có), sử dụng Debugger.Break()
thay vì điểm dừng, thiết lập nhiều dự án khởi động, dỡ bỏ dự án thử nghiệm của tôi để dự án dịch vụ là dự án duy nhất, cập nhật .NET, khởi động lại VS2015, khởi động lại, chuyển từ IIS cục bộ sang IIS Express và quay lại, tạo lại dịch vụ với WSDL mới nhất được bảo đảm. Không có gì quan trọng. Điểm dừng không bao giờ được nhấn.
Cuối cùng tôi đã phải loại bỏ các bản ghi trong tin nhắn lớn cho đến khi tôi tìm thấy một bản ghi duy nhất có dữ liệu xấu. Trong trường hợp của tôi, đó là một bản ghi không có giá trị cho 2 trường DateTime. Khi tôi tạo một tin nhắn chỉ có một bản ghi này trong đó và gửi nó, điểm dừng không bị ảnh hưởng. Khi tôi cung cấp các giá trị cho 2 trường DateTime đó và gửi cùng một thông báo (cố định) trong điểm dừng được kích hoạt như mong đợi.
Tôi đã bật mọi ngoại lệ CLR, không có gì khác ngoài các tệp .pbd bị thiếu, điều mà tôi không quan tâm. WCF vui vẻ gửi yêu cầu với một hồ sơ xấu thông qua. Tôi không nói rằng WCF không nên gửi nó dựa trên các hợp đồng, chỉ là hồ sơ xấu đã khiến điểm dừng không bị tấn công.