Yalnızca fiziksel wsdl dosyasıyla hizmet referansı nasıl oluşturulur


124

Yıllardır web servisleri oluşturuyor ve kullanıyorum ve her zaman istemciden bir servis referansı oluşturmak için Visual Studio'yu kullanabildim. Çalışmam gereken üçüncü taraf bir hizmetim var ve wsdl'yi görebilmek ve hizmet referansını yapabilmek için güvenliklerini açmayı reddediyorlar. Bu halka açık bir hizmet, bu yüzden bu seviyede bir güvenlik ihtiyacını görmüyorum, ama ne olduğu bu.

Bunun bir n00b sorusu olduğunu biliyorum ve sorduğum için utanıyorum, ancak elimde olan tek şey müşterinin bana e-posta ile gönderdiği wsdl'nin fiziksel bir kopyası iken müşterimde eşdeğer Hizmet Referansı bilgilerini nasıl oluşturabilirim? Web.config değişir, SOAP verileri üzerindeki nesne katmanı, vb. Otomatikleştirilmiş bir Hizmet Referansında olduğu gibi, hizmete bir bağlantı açmak ve onu tanımlanan nesnelerle kullanmaya başlamak istiyorum.

Üçüncü taraf hizmeti, söyleyebileceğim kadarıyla WCF değil, SOAP. VS 2010 btw kullanıyorum. Şimdiden teşekkürler Ken


Yanıtlar:


181

Bu en kolay yöntem olabilir

  • Projeye sağ tıklayın ve "Servis Referansı Ekle ..." seçeneğini seçin.
  • Adres: kutusuna, indirilen / Değiştirilen wsdl'nin fiziksel yolunu (C: \ test \ project ....) girin.
  • Git

11
"Yol Olarak Kopyala" seçeneğini kullanırsanız, tırnak işaretlerini kaldırın.
O. Jones

Wsdl'yi başka birine iletmek için kaydederken, wsdl'nin Chrome'daki web hizmetinden "kaynağını görüntüle" bana çalışan bir wsdl verirken IE11 vermedi. YMMV.
archangel76

69

Bunu yapmanın iki yolu var. Bir WSDL oluşturmak için IDE'yi kullanabilir veya bunu komut satırı aracılığıyla yapabilirsiniz.

1. IDE aracılığıyla oluşturmak için:

Çözüm gezgini bölmesinde, Hizmeti eklemek istediğiniz projeye sağ tıklayın:

görüntü açıklamasını buraya girin

Ardından, WSDL hizmetinizin yolunu girebilir ve git'e basabilirsiniz:

görüntü açıklamasını buraya girin

2. Komut satırı aracılığıyla oluşturmak için:

Bir VS 2010 Komut İstemi açın (Programlar -> Visual Studio 2010 -> Visual Studio Araçları)
Sonra yürütün:

WSDL /verbose C:\path\to\wsdl

WSDL.exe daha sonra kullanımınız için bir .cs dosyası çıkarır.

Dosya ile aldığınız xsd'ler gibi başka bağımlılıklarınız varsa, bunları bağımsız değişken listesine ekleyin:

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

Eğer VB çıkışı, kullanımı gerekiyorsa /language:VBek olarak /verbose.


'BlahURL' ad alanından 'blah' bağlaması içe aktarılamıyor ve 'SomeRequest' işlemi içe aktarılamıyor, 'xxx' öğesi eksik. Bu bana daha fazla destek dosyası vermeleri gerektiği anlamına mı geliyor, yoksa güvenliklerinin hiçbir şey yapamayacağım kadar kilitli olduğu anlamına mı geliyor?
kfoster

Bağımlılıkları eksikmişsiniz gibi görünüyor. WSDL'yi açın ve en üste bakın. importİçlerinde bir olan ve ardından xsd yolunu gösteren bir schemaLocation içeren çizgiler görürseniz , bu xsd dosyalarına da ihtiyacınız olacaktır.
Lynn Crumbling

Cevap için teşekkürler. Gerekli xsd içe aktarımlarını alıp alamayacağımı görmek için müşteriyle birlikte bekleyen bir e-postam var. Yine de çok sinir bozucu, doğru yapıldığında sadece ServiceReference diyaloğuna bir URL açıyorum, bir düğmeye basıp viola! Bir servis yöntemini aramaktan yaklaşık 3 satırlık kod uzaktayım. Tüm süreç yaklaşık 5 dakika sürer. Ancak bu müşteriyle haftalardır çalışıyorum ve hiçbir yere varamadım çünkü güvenlik çalışanları web üzerinden herhangi bir hizmet tanımına erişim sağlamayacak.
kfoster

Bu kaba. Şu anda bir proje için kendim için bir vpn bağlantısı bekliyorum. Neyse ki bana wsdl ve beraberindeki xsd belgelerini vaktinden önce verdiler. Yani bu ithalatı wsdl'de buldunuz?
Lynn Crumbling

Evet. 4 hizmet için bana 2'si için wsdl'ler ve diğer 2'si için xsd'ler verdikleri ortaya çıktı, bu nedenle herhangi bir hizmet için eksiksiz dosya seti yok. Ama sonunda xsd'leri aldım ve hizmetlerin 2'si için .cs dosyalarını oluşturabildim, diğer 2'sinin takip edeceğini varsayıyorum. Teşekkürler.
kfoster
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.