Buat proxy layanan web di Visual Studio dari file WSDL

101

Aplikasi saya perlu terhubung ke layanan web yang tidak memiliki definisi WSDL online. Namun pengembang memberi saya file WSDL.

Dengan WSDL Visual Studio publik dapat menghasilkan kode ini untuk saya menggunakan Wisaya Referensi Layanan. Tapi sepertinya tidak akan berhasil tanpa WSDL publik.

Bagaimana cara membuat kode untuk berbicara ke layanan web ini menggunakan file WSDL ini?

Anne
sumber

Jawaban:

116

Coba gunakan WSDL.exe dan kemudian sertakan file yang dihasilkan (.cs) ke dalam proyek Anda.

Jalankan prompt Perintah Visual Studio (di bawah visual studio / alat di menu mulai) lalu ketik

>wsdl.exe [path To Your WSDL File]

Itu akan mengeluarkan file, yang Anda salin / pindahkan dan sertakan dalam proyek Anda. File itu berisi kelas yang merupakan proxy untuk layanan Anda, Jalankan instance kelas itu, dan itu akan memiliki properti URL yang dapat Anda atur dengan cepat, dan sekumpulan metode yang dapat Anda panggil. Ini juga akan menghasilkan kelas untuk semua / objek kompleks apa pun yang melewati antarmuka layanan.

Andrew M
sumber
2
Terima kasih! Dan Anda dapat menggunakan parameter / o untuk jalur file yang diekspor. misalnya> wsdl.exe example.com/service.wsdl / o: C: \ Users \ X \ Desktop
gkonuralp
2
dan secara opsional menambahkan namespace secara manual, mencakup semua kelas, untuk mencegah konflik dengan file serupa yang dibuat.
Awan Biru
138

Menggunakan WSDL.exe tidak berhasil untuk saya (memberi saya kesalahan tentang jenis yang hilang), tetapi saya dapat mengklik kanan pada proyek saya di VS dan memilih "Tambahkan Referensi Layanan." Saya memasukkan path ke file wsdl di kolom Address dan tekan "Go." Itu sepertinya dapat menemukan semua jenis yang tepat dan menambahkan kelas langsung ke proyek saya.

jeffaudio
sumber
3
Menghadapi skenario yang sama dan saran Anda menyelamatkan saya dari banyak frustrasi dan mungkin sedikit masalah. Rep yang layak telah diberikan kepada Anda. (Sebagai hasil tidak langsung, Anda mendapat +100 di semua situs :))
Shadow Wizard is Ear For You
Saya mencoba ini, file diimpor, tetapi saya tidak dapat melihat di kode saya kelas
guiomie
1
Saya mencoba metode ini menggunakan MSVC 2015 tetapi menolak untuk memproses file wsdl menggunakan URL. Jadi saya menggunakan metode yang dijelaskan oleh Andrew M.
Hermann
1
Saya mencoba ini dari pc pengembangan yang tidak memiliki izin untuk mengakses layanan web. Meskipun file .wsdl ada di lokal, ia mencoba menghubungkan layanan ketika saya menekan "Go". Jadi saya tidak bisa menambahkan referensi. Dalam situasi ini saya pikir solusi dari Andrew M. harus diutamakan. Ini bekerja dengan baik.
gkonuralp
@jeffaudio im menghadapi masalah yang sama Saya dapat menambahkan referensi layanan untuk proyek web tetapi menggunakan wsdl.exe im tidak dapat menghasilkan file proxy. ada saran ..???
prakash r
15

Di samping catatan: jika Anda memiliki semua file secara lokal (tidak hanya file wsdl tetapi juga file xsd) Anda dapat menjalankan wsdl.exe dengan cara itu:

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

Dengan begitu wsdl.exe dapat menyelesaikan semua ketergantungan secara lokal dan menghasilkan kelas proxy dengan benar.

Mungkin ini akan menghemat waktu seseorang - ini memecahkan kesalahan "tipe yang hilang" ketika layanan tidak tersedia secara online.

Jarek Mazur
sumber
3

Coba alat kelas WSDL Ke Proxy yang disertakan dengan .NET Framework SDK. Saya belum pernah menggunakannya sebelumnya, tetapi pasti terlihat seperti yang Anda butuhkan.

Steve Danner
sumber
3

Ada Microsoft Doc untuk membuat fileWCF proxy dari baris perintah.

Anda dapat menemukan salinan lokal Anda wsdl.exedi lokasi yang mirip dengan ini: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools( Pelajari lebih lanjut di sini )

Pada akhirnya Anda Commandakan terlihat seperti ini:

"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
Serj Sagan
sumber
1

simpan file pada disk Anda dan kemudian gunakan yang berikut ini sebagai URL:

file://your_path/your_file.wsdl
Evan Camilleri
sumber
Ini adalah satu-satunya yang berfungsi untuk saya karena file yang dimaksud perlu diunduh setelah otentikasi terlebih dahulu. Terima kasih!
Kevin Radcliffe
-1

Karena URL Binding yang sebenarnya untuk layanan web terletak di file, Anda dapat melakukan langkah-langkah sederhana ini dari komputer lokal Anda:

1) Simpan file ke komputer lokal Anda misalnya:

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

2) Dalam Visual Studio Klik kanan pada proyek Anda> Pilih Tambahkan Referensi Web, dialog akan terbuka.

3) Di Kotak URL Salin lokasi file lokal di atas C: \ Documents and Settings [user] \ Desktop \ Webservice1.asmx, Klik Next

4) Sekarang Anda akan melihat fungsi muncul, pilih nama Anda untuk referensi, Klik tambahkan referensi

5) Selesai! Anda dapat mulai menggunakannya sebagai namespace di aplikasi Anda jangan khawatir Anda menggunakan file lokal, karena bagaimanapun URL yang benar untuk layanan ini terletak di file di bagian Binding

Israel Margulies
sumber
2
Ini sudah disarankan dalam jawaban yang sudah ada ini mengapa diulang?
Shadow Wizard adalah Ear For You
Mengapa file asmx ketika pertanyaannya tentang wsdl?
Awan Biru