2009-10-06 2 views
5

나는 내 손에 진짜 레몬을 가지고있다. 나는 같은 문제가 있거나 그것을 고치는 법을 아는 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다.WCF 재앙으로 인한 실패

나는 DB에서 데이터를 검색하는 ADO 엔티티 프레임 워크 모델을 사용하는 WCF 데이터 서비스를 만들려고 해요

설정. 나는 WCF 서비스 레퍼런스를 추가했고 모두 괜찮아 보인다. 두 세트의 데이터 서비스 호출이 있습니다. 첫 번째 것은 모든 "사용자"목록을 검색하고 반환합니다 (이 목록에는 주소, 연락처 등의 종속 데이터가 포함되어 있지 않습니다). 두 번째 호출은 "사용자"가 선택되면 응용 프로그램 요청에 포함 이러한 사용자 ID 부여 등의 주소, 연락처, 메시지, 같은 몇 가지 더 의존 정보. 이것은 또한 요구. 즉, 일부 사용자 선택 변경, 후 레몬

을. 잘 작동하는 것 같다

데이터 서비스의 종속적 인 데이터가 많아지면 응용 프로그램이 응답을 멈추고 응답을 중지합니다.

Crash error:

The request channel timed out while waiting for a reply after 00:00:59.9989999. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.

나는 디버깅 프로세스를 다시 시작하지만, 약 분 정도, VS 08 오류 메시지 상자 때까지 모든 데이터 서비스를하지 않습니다 응용 프로그램이 호출

Unable to process request from service. ' http://localhost:61768/ConsoleService.svc '. Catastrophic failure.

나는이 오류의 지옥을 봤했습니다 관련 문제는 없지만 사용 방법은 없습니다.

가능한 해결책

나는 문제의 원인에 관해서는 몇 가지 단서를 발견했습니다. 클라이언트의 app.config에서 :

  1. maxReceivedMessageSize> 더 높은 값으로 설정하십시오. 5242880.
  2. receiveTimeout> 더 높은 값으로 설정하십시오 (예 : 00:30:00

나는이 모든 것을 헛되이 시도했다. 나는 단순히 몇 가지 숫자를 변경하여 해결할 수없는 근본적인 문제가 있다고 생각합니다. 모든 리드가 많이 감사하게 될 것입니다.

답변

6

해결했습니다. = P.

원인

WCF 서비스는 잘 작동합니다. 범인은 데이터 서비스 호출이었습니다. 호출 할 때마다 데이터 서비스에 대한 새로운 참조를 인스턴스화했지만 결코 서비스 참조를 닫거나/삭제하지 않았습니다. 따라서 두 번 통화가 끝나면 데이터 서비스는 최대 연결에 도달하고 중단됩니다.

솔루션

제대로 데이터 서비스 참조/처분을 종료해야합니다. 가장 좋은 방법은 using 문으로 묶는 것입니다.

using(var dataService = new ServiceNS.ServiceClient()) 
{ 
    // Use service here   
} 
// The service will be disposed and connection freed. 
+0

이 속성으로 클라이언트와 비동기 서비스 참조를 사용하여 함께 싱글 패턴이 문제를 생성 하는가를 ??? –

관련 문제