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


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

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.