Cara menghasilkan referensi layanan hanya dengan file wsdl fisik

123

Saya telah membuat dan menggunakan layanan web selama bertahun-tahun dan selalu dapat menggunakan Visual Studio untuk membuat referensi layanan dari klien. Saya memiliki layanan pihak ketiga yang perlu saya tangani dan mereka menolak untuk membuka keamanan mereka sehingga saya dapat melihat wsdl dan membuat referensi layanan. Ini adalah layanan yang berhubungan dengan publik jadi saya tidak melihat kebutuhan akan tingkat keamanan itu tetapi memang seperti itu.

Saya tahu ini adalah pertanyaan n00b dan saya malu untuk menanyakannya, tetapi bagaimana cara membuat informasi Referensi Layanan yang setara di klien saya ketika semua yang saya miliki untuk saya adalah salinan fisik dari wsdl yang dikirimkan klien kepada saya? Perubahan web.config, lapisan objek di atas data SOAP, dll. Sama seperti Referensi Layanan otomatis saya hanya ingin membuka koneksi ke layanan dan mulai menggunakannya dengan objek yang ditentukan.

Sejauh yang saya tahu, layanan pihak ketiga bukanlah WCF, tetapi SOAP. Saya menggunakan VS 2010 btw. Terima kasih sebelumnya, Ken

kfoster
sumber
1
kemungkinan duplikat Buat proxy layanan web di Visual Studio dari file WSDL
John Fouhy

Jawaban:

180

Ini mungkin cara termudah

  • Klik kanan pada proyek dan pilih "Tambahkan Referensi Layanan ..."
  • Di kotak Address :, masukkan path fisik (C: \ test \ project ....) dari wsdl yang diunduh / Dimodifikasi.
  • Tekan Go
Ant Radha
sumber
11
Jika Anda menggunakan "Copy as Path", hapus tanda kutipnya.
O. Jones
Saat menyimpan wsdl untuk diteruskan ke orang lain, "lihat sumber" dari wsdl dari layanan web di chrome memberi saya wsdl yang berfungsi, sedangkan IE11 tidak. YMMV.
malaikat7676
68

Ada dua cara untuk melakukannya. Anda dapat menggunakan IDE untuk menghasilkan WSDL, atau Anda dapat melakukannya melalui baris perintah.

1. Untuk membuatnya melalui IDE:

Di panel explorer solusi, klik kanan pada proyek yang ingin Anda tambahi Layanan:

masukkan deskripsi gambar di sini

Kemudian, Anda dapat memasukkan jalur ke layanan WSDL Anda dan tekan go:

masukkan deskripsi gambar di sini

2. Untuk membuatnya melalui baris perintah:

Buka Command Prompt VS 2010 (Program -> Visual Studio 2010 -> Visual Studio Tools)
Kemudian jalankan:

WSDL /verbose C:\path\to\wsdl

WSDL.exe kemudian akan mengeluarkan file .cs untuk konsumsi Anda.

Jika Anda memiliki dependensi lain yang Anda terima dengan file tersebut, seperti xsd, tambahkan dependensi tersebut ke daftar argumen:

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

Jika Anda membutuhkan keluaran VB, gunakan /language:VBsebagai tambahan /verbose.

Lynn Rontok
sumber
Saya mendapatkan 'Tidak dapat mengimpor pengikatan' blah 'dari namespace' blahURL 'dan Tidak dapat mengimpor operasi' SomeRequest ', Elemen' xxx 'hilang. Apakah ini berarti mereka perlu memberi saya beberapa file dukungan lagi, atau bahwa keamanan mereka sangat terkunci sehingga saya tidak dapat melakukan apa-apa?
kfoster
Kedengarannya seperti Anda kehilangan ketergantungan. Buka WSDL dan lihat di bagian atas. Jika Anda melihat baris yang memiliki importdi dalamnya diikuti oleh schemaLocation yang mengarah ke jalur xsd, Anda juga memerlukan file xsd tersebut.
Lynn Crumbling
Terima kasih atas tanggapannya. Saya memiliki email yang luar biasa dengan klien untuk melihat apakah saya bisa mendapatkan impor xsd yang diperlukan. Ini sangat membuat frustrasi, ketika dilakukan dengan benar saya hanya memasukkan URL ke dialog ServiceReference, menekan tombol dan biola! Saya sekitar 3 baris kode lagi dari memanggil metode layanan. Seluruh proses memakan waktu sekitar 5 menit. Tetapi saya telah bekerja dengan klien ini selama berminggu-minggu dan tidak mendapatkan apa-apa karena petugas keamanan mereka tidak akan membuka akses ke definisi layanan apa pun melalui web.
kfoster
Itu kasar. Saat ini saya sedang menunggu koneksi vpn untuk sebuah proyek, saya sendiri. Untungnya, mereka memberi saya wsdl dan dokumen xsd yang menyertainya sebelumnya. Jadi, Anda menemukan impor tersebut di wsdl?
Lynn Crumbling
Iya. Ternyata untuk 4 layanan mereka memberi saya wsdl untuk 2 dari mereka dan xsd untuk 2 lainnya sehingga tidak ada set lengkap file untuk layanan apa pun. Tetapi saya akhirnya mendapatkan xsd dan dapat menghasilkan file .cs untuk 2 layanan, 2 lainnya akan mengikuti saya asumsikan. Terima kasih.
kfoster