2015-01-29 2 views
0

사전을 사용하지 않아도이 오류가 발생합니다. 서비스를 호출 할 때 이상한 점이 있습니다.WCF "해당 키가 사전에 없습니다."

wsSoapClient client = null; 
try 
{ 
    client = new wsSoapClient(); 
} 
catch (Exception ex) 
{ 
    // - Error in the web.config 
} 

try 
{ 
    SendData sendData = new SendData(); 
    sendData.finishDate = myVar.FinishDate; 
    sendData.startDate = myVar.StartDate; 
    // - Other fields 

    // - This lines throw the error below 
    ClientResult result = client.FinishCourse(sendData); 
} 
catch (Exception ex) 
{ 
    // - Message: The given key was not present in the dictionary. 
} 

스택 추적 :

StackTrace: at System.Collections.Generic.Dictionary``2.get_Item(TKey key) at Project.Model.CourseService.FinishCourse(XmlNode node)

서비스가 최신 버전인지, 나는 다른 곳이에 대한 정보를 찾을 수 없습니다. 그래서 두 가지 비슷한 질문이 있지만 그들은 Silverlight에 관한 것이고 이것 (일반적인 C# WCF 서비스 호출)과 솔루션 사이의 관계를 파악할 수는 없습니다.

이 문제의 원인과 해결 방법은 무엇입니까?

(편집) 추가 정보 : 바인딩은 basicHttpBinding, http 전용입니다.

편집 ² : WSDL.

편집 012 : 문제점을 발견했습니다. 분명히 이미 다른 오류 (필드가 허용하는 것보다 큰 값)가 있었는데 서비스가 오류을 반환했지만 어떤 이유로 WCF는 오류를 취하지 않고 예외를 throw하지 않았습니다. XML이 예상했던 것이 아니기 때문에이 사전 오류가 발생하여 정상적으로 처리하려고했습니다.

+0

wsdl을 게시 할 수 있습니까? – ManOnAMission

+0

@ManOnAMission 거대한 XML이고 IP를 통해 액세스가 차단되므로 미안합니다. 계약은 Visual Studio의 이전 버전 (URL에 대한 액세스 권한이있는 컴퓨터 인 2010 Web Express)에서 생성되었으므로 문제가 될 수도 있습니다. – Danicco

답변

0

서비스 메소드가 예외를 throw하는 것이 아니라고 가정하면 서비스 측에서 발생하는 SOAP 메시지 (즉 요청 객체)의 비 직렬화가있을 수 있습니다.

코드 (또는 wsdl)에서 SendData를 확인하고 요청 개체 (sendData 개체)에 설정하지 않은 nullable 속성이 없는지 확인합니다. 필수 속성이 누락되면 직렬화 복원 중에 문제가 발생할 수 있습니다.

SendData 코드 및 \ FinishCourse 서비스 메서드를 게시하면 가능한 문제를 분석하는 데 유용합니다.

+0

WSDL이 추가되었거나 참조를 언급 했습니까? CS 파일? 나는 그것을 살펴 봤지만, 그것을 사용하는 클래스는 단지 8 ~ 정도의 속성,'int'와'string'을 가지고 있습니다. 그것은 하나의 'IList '을 가지고 있습니다. 그래서 만약 내가 그 문제가 어디 있는지 짐작할 수 있었지만, 다른 함수들도이 같은 클래스를 가지고 있고 그들은 잘 작동합니다 ... – Danicco

관련 문제