วิธีสร้างการอ้างอิงบริการด้วยไฟล์ 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.