저는 C# mvc 응용 프로그램에서 wcf 서비스를 사용하고 있습니다. 클라이언트 측 (컨트롤러에)에서 대량의 데이터 (약 20000 레코드)를 wcf로 가져와야합니다.많은 양의 데이터를 크로스 도메인에 전달할 수 없습니다.
로컬 버전 - 나는 모든 레코드를 매우 잘 갖지만 서버 버전에서는 쿼리를 1000 레코드로 제한하지 않으면 아무 것도 얻지 못합니다.
System.ServiceModel.CommunicationException을 :
이 제한 모든 기록을 가지고 노력 아니에요이 내가 클라이언트 로그에 무엇을 얻을 은/WCF를 xxx는하기 위해 HTTP 응답을받는 동안 오류가 발생했습니다 .svc. 이는 HTTP 프로토콜을 사용하지 않는 서비스 엔드 포인트 바인딩에 대한 일 수 있습니다. 이 은 서버에서 HTTP 요청 컨텍스트가 중단 되었기 때문일 수 있습니다 (서비스가 종료되었을 가능성이 있습니다). 자세한 내용은 서버 로그 을 참조하십시오. ---> System.Net.WebException : 기본 연결이 닫혔습니다 : 수신시 예기치 않은 오류가 발생했습니다. ---> System.IO.IOException : 전송에서 데이터를 읽을 수 없습니다. 연결 : 기존 연결이 원격 호스트에 의해 강제로 닫혔습니다. ---> System.Net.Sockets.SocketException : 기존 연결 이 원격 호스트에서 강제로 닫혔습니다. System.Net.Sockets.NetworkStream.Read (Byte [] 버퍼, Int32 오프셋, Int32 크기) --- 내부 예외 스택 추적의 끝 --- 에서 System.Net.Sockets.NetworkStream.Read (Byte [] 버퍼, Int32 오프셋, Int32 크기) at System.Net.PooledStream.Read (Byte [] buffer, Int32 offset) , Int32 크기) 에서 System.Net.Connection.SyncRead (HttpWebRequest 요청, 부울 userRetrievedStream, 부울 probeRead) --- 내부 예외 끝 --- System.Net.HttpWebRequest.GetResponse (at) 에서 끝 시스템 .HttpChannelRequest.WaitForReply (T imeSpan 시간 초과) --- 내부 예외 스택 추적의 끝 ---
나는 클라이언트의 Web.config이를 추가했지만 그것은 도움이되지 않았다 :
<behaviors>
<endpointBehaviors>
<behavior >
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</endpointBehaviors>
</behaviors>
어떤 아이디어?
서버 쪽의 WCF 추적에 오류가 있습니까? –
@Jon_Lindeheim 아니요 – ParPar
왜 페이징을 사용하고 한 번에 1000 개 항목 만 요청합니까? 한번에 모든 것을 가져 오는 것은 틀림없이 나쁜 디자인 선택입니다. 이것은 인터넷이나 기업 LAN을 통해 진행됩니까? 여전히 교차 도메인에 대해 tcp를 사용할 수 있습니다. 자사의 LAN이라면 ** tcpBinding **을 사용해야합니다. J. Lowy, "WCF Services 프로그래밍", 제 3 판 – MickyD