วิธีสร้างการอ้างอิงบริการด้วยไฟล์ wsdl ทางกายภาพเท่านั้น


124

ฉันสร้างและใช้บริการเว็บมาหลายปีแล้วและสามารถใช้ Visual Studio เพื่อสร้างการอ้างอิงบริการจากไคลเอนต์ได้เสมอ ฉันมีบริการของบุคคลที่สามที่ฉันต้องทำงานด้วยและพวกเขาปฏิเสธที่จะเปิดการรักษาความปลอดภัยดังนั้นฉันจึงสามารถดู wsdl และทำการอ้างอิงบริการได้ เป็นบริการสาธารณะดังนั้นฉันจึงไม่เห็นความจำเป็นในการรักษาความปลอดภัยระดับนั้น แต่มันคือสิ่งที่เป็น

ฉันรู้ว่านี่เป็นคำถาม n00b และฉันรู้สึกละอายที่จะถามคำถามนี้ แต่ฉันจะสร้างข้อมูลอ้างอิงบริการที่เทียบเท่าในไคลเอนต์ของฉันได้อย่างไรในเมื่อสิ่งที่ฉันมีให้คือสำเนา wsdl ทางกายภาพที่ลูกค้าส่งอีเมลถึงฉัน การเปลี่ยนแปลง web.config เลเยอร์ออบเจ็กต์เหนือข้อมูล SOAP เป็นต้นเช่นเดียวกับการอ้างอิงบริการอัตโนมัติฉันแค่ต้องการเปิดการเชื่อมต่อกับบริการและเริ่มใช้กับวัตถุที่กำหนด

บริการของบุคคลที่สามไม่ใช่ WCF เท่าที่ฉันสามารถบอกได้ แต่เป็น SOAP ฉันใช้ VS 2010 btw ขอบคุณล่วงหน้าเคน


คำตอบ:


181

นี่อาจเป็นวิธีการที่ง่ายที่สุด

  • คลิกขวาที่โครงการและเลือก "เพิ่มการอ้างอิงบริการ ... "
  • ในกล่องที่อยู่: ป้อนเส้นทางจริง (C: \ test \ project .... ) ของ wsdl ที่ดาวน์โหลด / แก้ไข
  • ตีไป

11
หากคุณใช้ "คัดลอกเป็นเส้นทาง" ให้ถอดเครื่องหมายคำพูด
O. Jones

เมื่อบันทึก wsdl เพื่อส่งต่อไปยังบุคคลอื่น "ดูแหล่งที่มา" ของ wsdl จากบริการเว็บใน chrome ทำให้ฉันมี wsdl ที่ใช้งานได้ในขณะที่ IE11 ไม่ทำ YMMV
archangel76

69

มีสองวิธีที่จะไปเกี่ยวกับเรื่องนี้ คุณสามารถใช้ IDE เพื่อสร้าง WSDL หรือคุณสามารถทำได้ผ่านทางบรรทัดคำสั่ง

1. ในการสร้างผ่าน IDE:

ในบานหน้าต่างตัวสำรวจโซลูชันคลิกขวาที่โปรเจ็กต์ที่คุณต้องการเพิ่มบริการให้:

ใส่คำอธิบายภาพที่นี่

จากนั้นคุณสามารถเข้าสู่เส้นทางไปยังบริการ WSDL ของคุณและกด go:

ใส่คำอธิบายภาพที่นี่

2. ในการสร้างผ่านบรรทัดคำสั่ง:

เปิดพรอมต์คำสั่ง VS 2010 (โปรแกรม -> Visual Studio 2010 -> Visual Studio Tools)
จากนั้นดำเนินการ:

WSDL /verbose C:\path\to\wsdl

จากนั้น WSDL.exe จะส่งออกไฟล์. cs สำหรับการบริโภคของคุณ

หากคุณมีการอ้างอิงอื่น ๆ ที่คุณได้รับพร้อมกับไฟล์เช่น xsd's ให้เพิ่มสิ่งเหล่านี้ในรายการอาร์กิวเมนต์:

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

หากคุณต้องการเอาต์พุต VB ให้ใช้/language:VBนอกเหนือจากไฟล์/verbose.


ฉันได้รับ 'ไม่สามารถนำเข้าการผูก' blah 'จากเนมสเปซ' blahURL 'และไม่สามารถนำเข้าการดำเนินการ' SomeRequest ', องค์ประกอบ' xxx 'หายไป นี่หมายความว่าพวกเขาจำเป็นต้องให้ไฟล์สนับสนุนเพิ่มเติมแก่ฉันหรือว่าพวกเขามีความปลอดภัยดังนั้นพวกเขาจึงถูกล็อคไว้จนฉันไม่สามารถทำอะไรได้เลย?
kfoster

ดูเหมือนว่าคุณกำลังขาดการอ้างอิง เปิด WSDL และดูที่ด้านบน หากคุณเห็นบรรทัดที่มีimportอยู่ตามด้วย schemaLocation ที่ชี้ไปยังพา ธ xsd คุณจะต้องมีไฟล์ xsd เหล่านั้นด้วย
Lynn Crumbling

ขอบคุณสำหรับการตอบกลับ ฉันมีอีเมลที่ค้างอยู่กับลูกค้าเพื่อดูว่าฉันสามารถนำเข้า xsd ที่จำเป็นได้หรือไม่ มันน่าผิดหวังมากเมื่อทำถูกต้องฉันก็แค่ป๊อป URL ในกล่องโต้ตอบ ServiceReference กดปุ่มแล้ววิโอล่า! ฉันอยู่ห่างจากการเรียกใช้วิธีการบริการประมาณ 3 บรรทัดรหัส กระบวนการทั้งหมดใช้เวลาประมาณ 5 นาที แต่ฉันทำงานกับลูกค้ารายนี้มาหลายสัปดาห์แล้วและไม่ได้ไปไหนเลยเพราะเจ้าหน้าที่รักษาความปลอดภัยของพวกเขาจะไม่เปิดให้เข้าถึงข้อกำหนดของบริการใด ๆ ผ่านทางเว็บ
kfoster

ที่หยาบ ฉันกำลังรอการเชื่อมต่อ VPN สำหรับโปรเจ็กต์ด้วยตัวฉันเอง โชคดีที่พวกเขามอบ wsdl และเอกสาร xsd ให้ฉันก่อนเวลา คุณพบการนำเข้าเหล่านั้นใน wsdl หรือไม่?
Lynn Crumbling

ใช่. ปรากฎว่ามีบริการ 4 รายการที่พวกเขามอบ wsdl สำหรับ 2 รายการและ xsd สำหรับอีก 2 รายการดังนั้นจึงไม่มีชุดไฟล์ที่สมบูรณ์สำหรับบริการใด ๆ แต่ในที่สุดฉันก็ได้ xsd และสามารถสร้างไฟล์. cs สำหรับ 2 บริการได้ส่วนอีก 2 รายการจะตามมา ขอบคุณ
kfoster
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.