2009-10-30 14 views
11

Mam witrynę z usługą WCF obsługującą Silverlight. Usługa działa dobrze i mogę bez problemu przeglądać stronę WSDL w przeglądarce.Tworzenie klienta WCF programowo

Teraz próbuję utworzyć klienta w bibliotece DLL. Potrzebuję programistycznie utworzyć cały klient, ponieważ jest wywoływany w bibliotece DLL, która z jakiegokolwiek powodu (według projektu?) Nie odczyta sekcji ServiceModel z własnego pliku konfiguracyjnego.

Więc tutaj jest mój kod:

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) 

Ale kiedy wywołać metodę svc.CheckIt, pojawia się następujący błąd:

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'.."} 

Jak prawidłowo utworzyć mojego klienta tak, że te są właściwie "dopasowane"?
Z góry dziękuję !!!

+1

Sivlerlight nie obsługuje funkcji WSHttpBinding. http://msdn.microsoft.com/en-us/library/cc896571(VS.95).aspx –

Odpowiedz

11

Ah --- znalazłem. Sekcja ServiceModel w witrynie web.config została ustawiona na customBinding. Zmieniono to tak, aby pasowało do tego, co klient wysyłał, a teraz działa pięknie.

+0

Upewnij się również, że twój ** kontrakt ** pasuje do punktu końcowego serwera, więc używane są właściwe 'customBindings'. – SliverNinja

3

Wpadłem na ten sam problem. Bardziej spostrzeżenie, moja poprawka polegała na aktualizacji typu powiązań, z których korzystałem. Używałem wsHttpBindings zamiast basicHttpBindings. To powodowało awarie, ponieważ wsHttpBindings używa SOAP 1.2, a basicHttpBindings używa SOAP 1.1, a usługa, z której korzystałem, wymagała SOAP 1.1

0

Miałem ten sam błąd. Usługa kompilowała się, również aplikacja klienta. Odwołanie do usługi w aplikacji klienckiej pomyślnie uaktualniało odwołanie. Próbowałem już raz usunąć i dodać referencję, która nie była pomocna. Problem polegał na usunięciu interfejsu w serwisie WWW.