Windows 서비스에서 웹 서버에서 실행중인 WCF 서비스로의 WCF 호출을 사용하는 데 문제가 있습니다. 이 통화는 몇 주 동안 작동했지만 갑자기 작동을 멈 췄고 그 이후로 작동하지 않았습니다.
내가 얻는 예외는 다음과 같습니다.
일반 오류 발생 System.ServiceModel.CommunicationException : HTTP 요청을 만드는 동안 오류가 발생했습니다.
그리고 그것은 말한다
이는 HTTPS의 경우 서버 인증서가 HTTP.SYS로 올바르게 구성되지 않았기 때문일 수 있습니다. 이는 클라이언트와 서버 간의 보안 바인딩 불일치로 인해 발생할 수도 있습니다.
내가 양쪽에서 사용하는 보안은 어떤 종류의 암호화도없이 wsHttpBinding입니다. 또한 HTTPS가 아닌 HTTP를 사용하기 때문에 HTTPS에 대해 불평하는 이유를 모르겠습니다.
나머지 내부 예외 스택은 다음과 같습니다.
SystemNet.WebException : 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다. ---> System.IO.IOException : 전송 연결에 데이터를 쓸 수 없습니다. 잘못된 인수가 제공되었습니다. ---> System.Net.Sockets.SocketException : System.Net.Sockets.Socket.MultipleSend (BufferOffsetSize [] buffers, SocketFlags socketFlags)의 System.Net.Sockets.NetworkStream.MultipleWrite (BufferOffsetSize []에 잘못된 인수가 제공되었습니다. 버퍼)
또한이 문제가 발생하는 내 프로그램의 지점은 웹 서비스 호출의 "실행"줄에 있습니다. 즉, 웹 서비스를 호출하고 래핑 된 DataContract 개체를 전달하는 즉시 폭파.
이 서비스가 수행하는 모든 작업은 많은 양의 XML (클라이언트 측 호출에 .NET 개체로 전달됨)을 전달한 다음 일부 작업을 수행하는 것입니다. 아마도 약 100-200k의 XML이 전송되고 있습니다. 양쪽 끝의 데이터 크기에 대한 제한을 6 메가 이상으로 늘 렸지만 도움이되지 않는 것 같습니다.
어떤 아이디어?
이 문제에 대한 추가 정보 :
클라이언트 환경을 로컬로 복제 할 때 다음과 같이 변경하지 않으면 많은 양의 XML을 업로드 할 수 없습니다. 1. 서버에서 "maxRequestLength"를 100MB로 설정합니다 (보내는 것보다 훨씬 높음). 2. 켜기 클라이언트에서 dataContractSerializer 태그 아래의 maxItemsInObjectGraph 값을 "2147483646"으로 설정했습니다.
이러한 변경으로 로컬 설치가 성공적으로 업로드됩니다. 그러나 클라이언트의 서버 설치는 여전히 실패합니다. 흥미로운 점은 서버에서 maxRequestLength 값을 변경 한 후 테스트 설치에서 특히 maxItemsInObjectGraph 설정과 관련된 오류가 발생하기 시작했다는 것입니다. 클라이언트 서버에서는 여전히 원래 "HTTP.sys"오류가 발생합니다.
앞서 언급했듯이 우리는 SSL을 전혀 사용하지 않으며 동일한 방식으로 XML을 실행하고 업로드하는 2 개의 다른 웹 서비스 호출이 있습니다. 그러나 작동하지 않는 서비스 호출은 더 많은 데이터를 전송하기 때문에 크기 문제로 보입니다.
그러나 클라이언트가 가진 문제가 테스트 설치와 동일한 문제인 경우 클라이언트 오류 메시지가 ObjectGraph 오류와 관련이없는 이유를 알 수 없습니다.
클라이언트에서 가능한 모든 오류에 대해 일반적인 "유효하지 않은 매개 변수" "HTTP.sys"오류가 발생하는 것이 가능합니까 (즉, 실제로 objectGraph 오류도 발생하지만 표시되지 않습니까?)