2009-10-30 7 views
11

Silverlight 사용 WCF 서비스가있는 웹 사이트가 있습니다. 이 서비스는 정상적으로 작동하며 문제없이 브라우저에서 WSDL 페이지를 탐색 할 수 있습니다.프로그래밍 방식으로 WCF 클라이언트 만들기

이제 클라이언트를 DLL에 만들려고합니다. 프로그래밍 방식으로 전체 클라이언트를 만들 필요가 있습니다. 이유는 무엇이든 (의도적으로?) 자체 구성 파일에서 ServiceModel 섹션을 읽지 않는 DLL에서 호출되기 때문입니다. 그래서 여기

내 코드입니다 :

Dim endp As EndpointAddress = New EndpointAddress("http://www.mydomain.com/licensing/lic.svc") 
Dim bind As WSHttpBinding = New WSHttpBinding() 
Dim svc = New lnt.licClient(bind, endp) 
Dim rsp = svc.CheckIt(key) 

하지만 난이 svc.CheckIt 메서드를 호출 할 때, 나는 다음과 같은 오류 얻을 :

Content Type application/soap+xml; charset=utf-8 was not supported by service http://www.mydomain.com/licensing/lic.svc. 
The client and service bindings may be mismatched. 
{"The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'application/soap+msbin1'.."} 

내가 제대로이 있도록 내 클라이언트를 작성하는 방법을 제대로 "일치"되어 있습니까 ??
미리 감사드립니다.

+1

Sivlerlight는 WSHttpBinding을 지원하지 않습니다. http://msdn.microsoft.com/en-us/library/cc896571(VS.95).aspx –

답변

11

아 --- 발견했습니다. 웹 사이트의 web.config에있는 ServiceModel 섹션은 customBinding으로 설정되었습니다. 클라이언트가 전송 한 내용과 일치하도록 변경되어 이제는 아름답게 작동합니다.

+0

올바른 'customBindings'가 사용되도록 서버 계약에서 ** Contract **가 일치하는지 확인하십시오. – SliverNinja

3

동일한 문제가 발생했습니다. 더 spefically 내 수정은 내가 사용하고 있던 바인딩의 유형을 업데이 트하는 것이었다. basicHttpBindings 대신 wsHttpBindings을 사용하고있었습니다. 이것은 wsHttpBindings이 SOAP 1.2를 사용하고, basicHttpBindings이 SOAP 1.1을 사용하고 서비스가 내가 필요한 SOAP 1.1을 사용함에 따라 실패의 원인이되었습니다.

0

동일한 오류가있었습니다. 서비스는 컴파일 중이며 클라이언트 응용 프로그램도 있습니다. 클라이언트 응용 프로그램의 서비스 참조가 성공적으로 참조를 업데이트하고있었습니다. 내가 삭제 시도하고 다시 한번 참조를 추가하고 was'nt 도움이됩니다. 문제는 웹 서비스에서 제거 된 인터페이스에있었습니다.

관련 문제