WCF 서비스에서 데이터를 반환 할 때이 오류 메시지가 나타납니다.소켓 연결이 중단되었습니다. 가능한 직렬화 예외?
"메시지가 처리되는 동안 오류가 발생했거나 원격 호스트에서 수신 시간 초과 또는 기본 네트워크 리소스 문제가 발생하여 소켓 연결이 중단되었습니다. 로컬 소켓 시간 초과가 '00 : 00 : 59.9960000 ' "
~ 59 초가 표시되기 때문에 오해의 소지가 있지만 예외는 약 2 초입니다. 이 오류 메시지를 수신 한 마지막 순간 엔티티 프레임 워크 객체를 직렬화하여 발생하는 무한 루프와 관련이 있습니다. 다행히도, 나는 변화를 만들었으므로 쉽게 발견 할 수있었습니다.
이번에는 어떤 문제가 발생했는지 알 수 없습니다. 나는 엔티티 프레임 워크 클래스를 변경하여 변경되지 않았 음을 알았습니다. 내가 아는 한, 데이터베이스가 상당히 크기 때문에 그것을 증명하는 방법을 알지 못하더라도 데이터베이스는 동일하게 유지되었습니다.
디버거를 사용하여 WCF 코드를 단계별로 실행하면 데이터가 올바르게 수집되고 있음을 알 수 있습니다. 심지어 정보를 반환하려고 시도합니다. 그러나, 클라이언트 측 프록시에 나는이 코드 줄에 예외가 나타납니다
return Channel.GetDocuments(user, criterion);
아무도 날이 예외를 추적하는 데 도움이 될 수 있습니다 어떤 통찰력이나 도구가 있습니까?
또한 순환 참조라고 의심됩니다. 어떤 'DataMember'가 범인인지 알아내는 영리한 방법이 있습니까? 나는 속성을 들여다 보았고 '명백한'것도 튀어 나오지 않았습니다. –
두 가지를 찾습니다. 1. 호출자와 동일한 유형의 반환 유형입니다. 2. 이것은 일반적으로 프로퍼티입니다. 프로퍼티를 가진 클래스이며, 그 중 하나는 객체 그래프의 어딘가에있는 부모와 같은 타입입니다. 내 머리 꼭대기에서 내가 아는 어떤 트릭도 없다. –