2011-07-06 15 views
5

Pracuję z serwerem sieciowym Fedex. Nie podali adresu URL usługi internetowej, takiego jak http://hostServer/WebserviceRoot/WebServiceName.asmx. Zamiast tego dostarczyli plik .wsdl.Generowanie usługi proxy sieci Web z usługi WSDL C#

Proszę, poprowadź mnie do generowania klas proxy usługi sieciowej z pliku .wsdl i dodaj odwołanie do usługi sieciowej do mojego projektu.

wiem wygenerować pełnomocnika z wsdl jak

wsdl /l:cs /protocol:SOAP /o:MyProxy.cs mywsdl.wsdl 

ale chcę wiedzieć, co robi. Może utworzyć klasę proxy, ale jak dodać odniesienie do usługi WWW do mojego projektu?

+0

Myślę, że powinieneś utworzyć _client_ bezpośrednio z tego WSDL, a nie serwer. Wydaje się, że to polecenie tworzy klienta. Powinieneś prawie zrobić (-: –

Odpowiedz

11

Jeśli tworzysz klasy proxy ręcznie, musisz je tylko dodać do swojego projektu. Add Web Reference mechanizm w Visual Studio służy do automatyzacji tego procesu i dodać typy w.

wsdl wykonywalny odczyta plik WSDL, które zostały pobrane („mywsdl.wsdl”), i wygenerować kod serwera proxy, w Twój przykład w języku C# (w "MyProxy.cs"). Możesz dodać "MyProxy.cs" do swojego projektu i rozpocząć tworzenie wystąpień wygenerowanego klienta w swoim projekcie.

5

użyj polecenia wsdl.exe z wiersza poleceń programu visual studio.

ex:

WSDL c:/myfile.wsdl 
1

Zwykle są dwa sposoby radzenia sobie z usług internetowych. Jeden, jak wspomniałeś, użyj adresu URL usługi ../service.asmx. W ten sposób wystarczy użyć "Dodaj odniesienie do strony internetowej" w projekcie studia wizualnego i zawsze masz połączenie z usługą live web. Jest to o wiele łatwiejsze, wadą jest to, że jeśli usługa internetowa postanowi coś zmienić, musisz również zmienić swój odnośnik. Ponownie skompiluj projekt i przeprowadź ponowne wdrożenie.

Jeśli przechowujesz lokalną kopię pliku wsdl, jeśli wprowadzisz pole obowiązkowe w pliku WSDL na żywo, nadal jesteś chroniony, dopóki działająca z nim podstawa kodu nadal działa. Jeśli generujesz klasę proxy.cs na własną rękę, tak jak w zaakceptowanej odpowiedzi, to po prostu działa to jak dodawanie jej przez studio graficzne, z tym że musisz ręcznie dodać klasę do projektu.

Sądzę, że w pliku WSDL można uzyskać cały adres URL usługi sieci Web z <soap:address location="http://testsite.com/test.asmx" />. Zwykle nie jest dobrą praktyką korzystanie z lokalnego pliku WSDL, jeśli masz zamiar nadążyć za zmianami. Wątpię, że będziesz miał ten problem, ponieważ jest to serwis internetowy Fedex, prawdopodobnie przetrwał próbę czasu.

Powiązane problemy