2009-06-03 11 views
22

Mam stary plik WSDL i chcę używać WCF do komunikowania się z usługą.Jak użyć pliku WSDL do utworzenia proxy WCF?

Plik WSDL jest generowany z ASMX (przypuszczam, ale nie jestem pewien).

Jakie kroki należy podjąć, aby się z nim komunikować?

+1

Nie powinno mieć znaczenia, co wygenerowało WSDL. – Cheeso

Odpowiedz

21

Zastosowanie svcutil.exe stworzyć serwer proxy WCF, aby zadzwonić do serwisu. Szczegóły here.

+1

OK, dam ci iść! W visual studio i Windows SDK znajduje się plik wsdl.exe. Użyłem tego do wygenerowania klasy proxy, czy to jest to samo co svcutil.exe? Kiedy wygeneruję plik proxy, w jaki sposób powinienem użyć tego generatora proxy? – Raha

+5

To nie to samo. svcutil.exe to narzędzie, które wygeneruje proxy i stubs (i inne rzeczy) dla WCF. wsdl.exe działa podobnie do ASMX. Od 2006 roku WCF zastąpiło ASMX jako preferowane środowisko programowania usług internetowych w .NET. Tak, ASMX jest stary, WCF jest nowy. – Cheeso

25

Kliknij projekt prawym przyciskiem myszy i wybierz polecenie "Dodaj referencję serwisową". Wskaż WSDL. Kliknij OK". To powinno być wszystko.

enter image description here

+3

Nie mogłem znaleźć przycisku "przeglądaj" - musiałem skopiować/wkleić pełną ścieżkę pliku wsdl w Visual Studio 2010. –

+0

Nie odwoływałem się do przycisku "przeglądaj". Co masz na myśli? –

+3

Och, chodzi mi o to, że jestem przyzwyczajony do aplikacji, które wymagają podania nazwy pliku z przyciskiem "Przeglądaj" lub "...", aby można było wybrać lokalizację. Interfejs Visual Studio jest trochę mylący, ponieważ nie pozwala na to - musisz ręcznie skopiować/wkleić lokalizację pliku wsdl. Tak proste, jak to było po tym, jak się o tym dowiedziałem, na początku było to zdecydowanie mylące. –

8

wsdl.exe to stara usługa internetowa (1.1) sposób tworzenia proxy. Pierwszą rzeczą, którą należy wypróbować, jest "Dodaj odniesienie do usługi", o czym już wspomniano. To wykorzystuje svcutil.exe do utworzenia proxy. Jeśli potrzebujesz większej kontroli nad tworzeniem proxy, możesz użyć svcutil.exe z wiersza poleceń z różnymi przełącznikami.

Z tym powiedziane ... miałem problemy ze starszymi wsdls usługi sieci Web. W szczególności stara usługa sieci Web Apache AXIS zawierająca przeładowane operacje. Proszę zobaczyć mój post here, aby uzyskać szczegółowe informacje. (Mój problem nadal nie został rozwiązany, mam nadzieję, że nie napotkasz na te same problemy, ale jeśli to zrobisz i rozwiążesz je, odpowiedz na moje pytanie :)

+1

Nie ma koncepcji "przeciążania" w usługach internetowych. Apache powinien wiedzieć lepiej i mam nadzieję, że już się nauczyli. Zwykle tworzyli zabawne rzeczy, takie jak schematy emitujące typy podobne do apachesoap: XmlElement, a następnie nie definiują tych typów. Prawdopodobnie działało dobrze, jeśli używasz kodu Apache do korzystania z usługi, ale nie inaczej. –

+0

Dzięki za komentarz, John. Najwyraźniej WSDL 1.1 zezwalał na przeciążenia? (zobacz http://webservices.xml.com/pub/a/ws/2003/01/08/randyray.html) Ta sama usługa, o której wspomniałem, zawierała kilka typów błędów, których svcutil nie mógł zrozumieć. Miałem trochę czasu, aby go uruchomić i dopiero po wprowadzeniu znaczących zmian w kodzie proxy. –

Powiązane problemy