WSDL dosyasından Visual Studio'da web hizmeti proxy'si oluşturun


102

Başvurumun çevrimiçi WSDL tanımına sahip olmayan bir web hizmetiyle konuşması gerekiyor. Ancak geliştiriciler bana bir WSDL dosyası sağladı.

Genel bir WSDL Visual Studio ile Hizmet Başvurusu sihirbazını kullanarak bu kodu benim için oluşturabilir. Ancak halka açık bir WSDL olmadan işe yaramıyor gibi görünüyor.

Bu WSDL dosyasını kullanarak bu web hizmetiyle konuşmak için kodu nasıl oluşturabilirim?

Yanıtlar:


116

WSDL.exe'yi kullanmayı ve ardından oluşturulan dosyayı (.cs) projenize dahil etmeyi deneyin .

Visual Studio Komut istemini çalıştırın (başlat menüsünde görsel stüdyo / araçlar altında) ve ardından yazın

>wsdl.exe [path To Your WSDL File]

Bu, kopyaladığınız / taşıdığınız ve projenize dahil ettiğiniz bir dosyayı ortaya çıkarır. Bu dosya, servisinize vekil olan bir sınıf içerir, bu sınıfın bir örneğini ateşleyin ve anında ayarlayabileceğiniz bir URL özelliğine ve çağırabileceğiniz bir dizi yönteme sahip olacaktır. Ayrıca, hizmet arayüzünden geçen tüm / tüm karmaşık nesneler için sınıflar oluşturacaktır.


2
Teşekkürler! Ve dışa aktarılan dosyanın yolu için / o parametresini kullanabilirsiniz. örneğin> wsdl.exe example.com/service.wsdl / o: C: \ Users \ X \ Desktop
gkonuralp

2
ve isteğe bağlı olarak, oluşturulan benzer dosyalarla çakışmayı önlemek için tüm sınıfları kapsayan bir ad alanını manuel olarak ekleyin.
Blue Clouds

139

WSDL.exe'yi kullanmak benim için işe yaramadı (eksik türle ilgili bir hata verdi), ancak VS'de projeme sağ tıklayıp "Hizmet Referansı Ekle" yi seçebildim. Adres alanına wsdl dosyasının yolunu girdim ve "Git" e bastım. Bu, tüm uygun türleri bulabiliyor gibiydi ve sınıfları doğrudan projeme ekledi.


3
Aynı senaryoyla karşılaştım ve öneriniz beni çok fazla hayal kırıklığı ve muhtemelen biraz saçtan kurtardı. Size hak edilmiş bir rep verildi. (Dolaylı sonuç olarak, tüm sitelerde +100 aldınız :))
Gölge Sihirbazı Sizin İçin Kulak

Bunu denedim, dosya içe
aktarılıyor

1
Bu yöntemi MSVC 2015 kullanarak denedim ancak wsdl dosyasını URL kullanarak işlemeyi reddetti. Bu yüzden Andrew M. tarafından açıklanan yöntemi kullandım
Hermann

1
Bunu, web hizmetine erişim izni olmayan bir geliştirme bilgisayarından denedim. .Wsdl dosyası yerel olmasına rağmen, "Git" e bastığımda hizmete bağlanmayı denedi. Bu yüzden referans ekleyemedim. Bu durumda Andrew M.'nin çözümünün tercih edilmesi gerektiğini düşünüyorum. İyi çalıştı.
gkonuralp

@jeffaudio benzer bir sorunla karşı karşıyayım Web projesi için servis referansı ekleyebiliyorum ancak wsdl.exe kullanarak proxy dosyası oluşturamıyorum. herhangi bir öneri ..???
prakash r

15

Yandaki not: eğer tüm dosyalara yerel olarak sahipseniz (sadece wsdl dosyası değil, aynı zamanda xsd dosyaları) wsdl.exe'yi şu şekilde çağırabilirsiniz:

wsdl.exe [path to your wsdl file] [paths to xsd files imported by wsdl]

Bu şekilde wsdl.exe tüm bağımlılıkları yerel olarak çözebilir ve proxy sınıfını doğru şekilde oluşturur.

Belki birisine biraz zaman kazandırır - hizmet çevrimiçi olarak mevcut olmadığında "eksik tip" hatasını çözer.


4

Proxy'niziWCF komut satırından oluşturmak için bir Microsoft Doc var .

Yerel kopyanızı wsdl.exebuna benzer bir konumda bulabilirsiniz : C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools( Buradan daha fazla bilgi edinin )

Sonunda Commandşuna benzer görünmelisiniz:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\wsdl.exe"
 /language:CS /n:"My.Namespace" https://www.example.com/service/wsdl


1

dosyayı diskinize kaydedin ve ardından aşağıdakileri URL olarak kullanın:

file://your_path/your_file.wsdl

Söz konusu dosyanın önce kimlik doğrulamasından sonra indirilmesi gerektiğinden, benim için çalışan tek dosya bu. Teşekkürler!
Kevin Radcliffe

-1

Web hizmetinin gerçek Bağlama URL'si dosyada bulunduğundan, yerel makinenizden şu basit adımları uygulayabilirsiniz:

1) Dosyayı yerel bilgisayarınıza kaydedin, örneğin:

C:\Documents and Settings\[user]\Desktop\Webservice1.asmx

2) Visual Studio'da projenize sağ tıklayın> Web Referansı Ekle'yi seçin, bir iletişim kutusu açılacaktır.

3) URL Kutusunda C: \ Documents and Settings [kullanıcı] \ Desktop \ Webservice1.asmx'in üstüne yerel dosya konumunu kopyalayın, İleri'ye tıklayın

4) Şimdi fonksiyonların göründüğünü göreceksiniz, referans için adınızı seçin, Referans ekle'ye tıklayın

5) Bitirdiniz! bunu uygulamanızda bir ad alanı olarak kullanmaya başlayabilirsiniz, yerel bir dosya kullandığınız konusunda endişelenmeyin, çünkü hizmetin gerçek URL'si Bağlama bölümündeki dosyada bulunur.


2
Bu, bu mevcut cevapta zaten önerilmişti, neden tekrar edelim?
Gölge Sihirbazı Senin İçin Kulak

Soru wsdl ile ilgili olduğunda neden asmx dosyası?
Mavi Bulutlar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.