Jak wygenerować odwołanie do usługi przy użyciu tylko fizycznego pliku WSDL

124

Tworzę i korzystam z usług internetowych od lat i zawsze mogłem używać Visual Studio do tworzenia referencji usługi od klienta. Mam usługę innej firmy, z którą muszę współpracować, a ta odmawia otwarcia swoich zabezpieczeń, więc mogę zobaczyć wsdl i podać odniesienie do usługi. Jest to usługa publiczna, więc nie widzę potrzeby zapewnienia takiego poziomu bezpieczeństwa, ale tak właśnie jest.

Wiem, że jest to pytanie n00b i wstydzę się go zadawać, ale jak mogę utworzyć równoważne informacje referencyjne usługi w moim kliencie, skoro wszystko, co mam do dyspozycji, to fizyczna kopia wsdl, którą klient wysłał mi e-mailem? Zmienia się plik web.config, warstwa obiektowa nad danymi SOAP, itd. Podobnie jak w przypadku zautomatyzowanego Service Reference, chcę tylko otworzyć połączenie z usługą i zacząć używać jej ze zdefiniowanymi obiektami.

O ile wiem, usługa innej firmy nie jest usługą WCF, ale jest to SOAP. Przy okazji używam VS 2010. Z góry dziękuję, Ken

kfoster
źródło

Odpowiedzi:

181

To może być najłatwiejsza metoda

  • Kliknij prawym przyciskiem myszy projekt i wybierz „Dodaj odwołanie do usługi ...”
  • W polu Adres: wprowadź ścieżkę fizyczną (C: \ test \ projekt ....) pobranego / zmodyfikowanego pliku wsdl.
  • Hit Go
Ant Radha
źródło
11
Jeśli używasz opcji „Kopiuj jako ścieżkę”, usuń cudzysłowy.
O. Jones,
Podczas zapisywania wsdl w celu przekazania go komuś innemu, "wyświetl źródło" wsdl z usługi WWW w chrome dał mi działający wsdl, podczas gdy IE11 nie. YMMV.
archangel76,
69

Można to zrobić na dwa sposoby. Możesz użyć IDE do wygenerowania WSDL lub możesz to zrobić za pomocą wiersza poleceń.

1. Aby utworzyć go za pomocą IDE:

W panelu eksploratora rozwiązań kliknij prawym przyciskiem myszy projekt, do którego chcesz dodać usługę:

wprowadź opis obrazu tutaj

Następnie możesz wprowadzić ścieżkę do WSDL usługi i nacisnąć go:

wprowadź opis obrazu tutaj

2. Aby utworzyć go za pomocą wiersza poleceń:

Otwórz wiersz polecenia programu VS 2010 (Programy -> Visual Studio 2010 -> Narzędzia programu Visual Studio)
Następnie wykonaj:

WSDL /verbose C:\path\to\wsdl

WSDL.exe wyprowadzi następnie plik .cs do wykorzystania.

Jeśli masz inne zależności, które otrzymałeś z plikiem, takie jak xsd, dodaj je do listy argumentów:

WSDL /verbose C:\path\to\wsdl C:\path\to\some\xsd C:\path\to\some\xsd

Jeśli potrzebujesz wyjścia VB, użyj /language:VBoprócz /verbose.

Lynn Crumbling
źródło
Otrzymuję komunikat „Nie można zaimportować powiązania„ blah ”z przestrzeni nazw„ blahURL ”i Nie można zaimportować operacji„ SomeRequest ”. Brak elementu„ xxx ”. Czy to oznacza, że ​​muszą dać mi więcej plików pomocniczych, czy też ich zabezpieczenia są tak cholernie zablokowane, że nie mogę nic zrobić?
kfoster
Z pewnością brzmi to tak, jakbyś brakowało zależności. Otwórz WSDL i spójrz na górę. Jeśli zobaczysz wiersze, które mają importw sobie znak, a po nim schemaLocation wskazujący na ścieżkę xsd, będziesz potrzebować również tych plików xsd.
Lynn Crumbling
Dzięki za odpowiedź. Mam zaległą wiadomość e-mail z klientem, aby sprawdzić, czy mogę uzyskać niezbędne importy xsd. Jest to jednak tak frustrujące, że kiedy zrobię to dobrze, po prostu wrzucam adres URL do okna dialogowego ServiceReference, wciskam przycisk i viola! Jestem o 3 linijki kodu od wywołania metody usługi. Cały proces trwa około 5 minut. Ale pracuję z tym klientem od tygodni i nie udało mi się osiągnąć wszystkiego, ponieważ ich ochroniarze nie otworzą dostępu do definicji usług przez Internet.
kfoster
To jest szorstkie. Obecnie sam czekam na połączenie VPN dla projektu. Na szczęście przed czasem dostałem wsdl i towarzyszące dokumenty xsd. Więc znalazłeś te importy w wsdl?
Lynn rozpada się
Tak. Okazuje się, że dla 4 usług, które dali mi wsdl dla 2 z nich i xsd dla pozostałych 2, więc nie ma pełnego zestawu plików dla żadnej z usług. Ale w końcu dostałem xsd i byłem w stanie wygenerować pliki .cs dla 2 usług, pozostałe 2 pójdą zgodnie z założeniami. Dzięki.
kfoster