สร้างพร็อกซีบริการเว็บใน Visual Studio จากไฟล์ WSDL


101

แอปพลิเคชันของฉันต้องพูดคุยกับบริการบนเว็บที่ไม่มีข้อกำหนด WSDL ออนไลน์ อย่างไรก็ตามนักพัฒนาให้ไฟล์ WSDL มาให้ฉัน

ด้วย WSDL Visual Studio สาธารณะสามารถสร้างรหัสนี้ให้ฉันโดยใช้ตัวช่วยสร้างการอ้างอิงบริการ แต่ดูเหมือนจะไม่ทำงานหากไม่มี WSDL สาธารณะ

ฉันจะสร้างรหัสสำหรับพูดคุยกับบริการบนเว็บโดยใช้ไฟล์ WSDL นี้ได้อย่างไร

คำตอบ:


116

ลองใช้WSDL.exeแล้วรวมไฟล์ที่สร้างขึ้น (.cs) ลงในโปรเจ็กต์ของคุณ

เปิดพรอมต์คำสั่ง Visual Studio (ภายใต้ Visual Studio / tools ในเมนูเริ่ม) จากนั้นพิมพ์

>wsdl.exe [path To Your WSDL File]

ซึ่งจะพ่นไฟล์ที่คุณคัดลอก / ย้ายและรวมไว้ในโครงการของคุณ ไฟล์นั้นมีคลาสซึ่งเป็นพร็อกซีให้กับบริการของคุณเปิดอินสแตนซ์ของคลาสนั้นและจะมีคุณสมบัติ URL ที่คุณสามารถตั้งค่าได้ทันทีและมีวิธีการมากมายที่คุณสามารถเรียกใช้ได้ นอกจากนี้ยังสร้างคลาสสำหรับอ็อบเจ็กต์ที่ซับซ้อนทั้งหมด / ใด ๆ ที่ส่งผ่านอินเทอร์เฟซบริการ


2
ขอบคุณ! และคุณสามารถใช้พารามิเตอร์ / o สำหรับพา ธ ของไฟล์ที่ส่งออก เช่น> wsdl.exe example.com/service.wsdl / o: C: \ Users \ X \ Desktop
gkonuralp

2
และเลือกเพิ่มเนมสเปซด้วยตนเองโดยครอบคลุมทุกคลาสเพื่อป้องกันความขัดแย้งกับไฟล์ที่คล้ายกันที่สร้างขึ้น
Blue Clouds

138

การใช้ WSDL.exe ไม่ได้ผลสำหรับฉัน (ทำให้ฉันมีข้อผิดพลาดเกี่ยวกับประเภทที่หายไป) แต่ฉันสามารถคลิกขวาที่โปรเจ็กต์ของฉันใน VS และเลือก "เพิ่มการอ้างอิงบริการ" ฉันป้อนเส้นทางไปยังไฟล์ wsdl ในช่อง Address และกด "Go" ดูเหมือนว่าจะสามารถค้นหาประเภทที่เหมาะสมทั้งหมดและเพิ่มชั้นเรียนลงในโครงการของฉันได้โดยตรง


3
ต้องเผชิญกับสถานการณ์เดียวกันและคำแนะนำของคุณช่วยให้ฉันหงุดหงิดมากและอาจเป็นผมบาง คุณสมควรได้รับตัวแทนแล้ว (ผลทางอ้อมคุณได้รับ +100 ในทุกไซต์ :))
Shadow Wizard is Ear For You

ฉันลองสิ่งนี้นำเข้าไฟล์ แต่ฉันมองไม่เห็นในรหัสของฉันว่าเป็นคลาส
guiomie

1
ฉันลองใช้วิธีนี้โดยใช้ MSVC 2015 แต่ปฏิเสธที่จะประมวลผลไฟล์ wsdl โดยใช้ URL ฉันจึงใช้วิธีที่แอนดรูว์เอ็ม.
เฮอร์แมนน์

1
ฉันลองใช้สิ่งนี้จากพีซีสำหรับพัฒนาที่ไม่มีสิทธิ์เข้าถึงบริการเว็บ แม้ว่าไฟล์. wsdl จะอยู่ในเครื่อง แต่ก็พยายามเชื่อมต่อบริการเมื่อฉันกด "Go" ดังนั้นฉันจึงไม่สามารถเพิ่มข้อมูลอ้างอิงได้ ในสถานการณ์เช่นนี้ฉันคิดว่าควรเลือกวิธีแก้ปัญหาของ Andrew M. มันทำงานได้ดี
gkonuralp

@jeffaudio ฉันประสบปัญหาที่คล้ายกันฉันสามารถเพิ่มการอ้างอิงบริการสำหรับโครงการเว็บ แต่ใช้ wsdl.exe ฉันไม่สามารถสร้างไฟล์พร็อกซีได้ มีข้อเสนอแนะ .. ???
prakash r

15

สังเกตด้านบนนี้: ถ้าคุณมีทั้งหมดของไฟล์ในประเทศ (ไม่เพียง แต่ไฟล์ WSDL แต่ไฟล์ยัง xsd) คุณสามารถเรียก wsdl.exe ในลักษณะที่:

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

ด้วยวิธีนี้ wsdl.exe สามารถแก้ไขการอ้างอิงทั้งหมดในเครื่องและสร้างคลาสพร็อกซีได้อย่างถูกต้อง

บางทีมันอาจจะช่วยใครบางคนได้บ้าง - มันแก้ข้อผิดพลาด "ประเภทที่หายไป" เมื่อบริการไม่สามารถใช้ได้ทางออนไลน์



3

มีMicrosoft Docสำหรับสร้างไฟล์WCFพร็อกซีจากบรรทัดคำสั่ง

คุณสามารถค้นหาสำเนาwsdl.exeในเครื่องของคุณได้ในสถานที่ที่คล้ายคลึงกับสิ่งนี้: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools( เรียนรู้เพิ่มเติมที่นี่ )

ในที่สุดคุณCommandควรมีลักษณะคล้ายกับสิ่งนี้:

"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

1

บันทึกไฟล์บนดิสก์ของคุณแล้วใช้สิ่งต่อไปนี้เป็น URL:

file://your_path/your_file.wsdl

นี่เป็นไฟล์เดียวที่ใช้ได้ผลสำหรับฉันเนื่องจากไฟล์ที่เป็นปัญหาจำเป็นต้องดาวน์โหลดหลังจากการตรวจสอบสิทธิ์ก่อน ขอบคุณ!
Kevin Radcliffe

-1

เนื่องจาก URL การผูกที่แท้จริงสำหรับบริการเว็บอยู่ในไฟล์คุณสามารถทำขั้นตอนง่ายๆเหล่านี้ได้จากเครื่องในพื้นที่ของคุณ:

1) บันทึกไฟล์ลงในคอมพิวเตอร์ของคุณเช่น:

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

2) ใน Visual Studio คลิกขวาที่โครงการของคุณ> เลือกเพิ่มการอ้างอิงเว็บกล่องโต้ตอบจะเปิดขึ้น

3) ในกล่อง URL คัดลอกตำแหน่งไฟล์ในเครื่องด้านบน C: \ Documents and Settings [ผู้ใช้] \ Desktop \ Webservice1.asmx คลิกถัดไป

4) ตอนนี้คุณจะเห็นฟังก์ชันปรากฏขึ้นเลือกชื่อของคุณสำหรับการอ้างอิงคลิกเพิ่มการอ้างอิง

5) เสร็จแล้ว! คุณสามารถเริ่มใช้เป็นเนมสเปซในแอปพลิเคชันของคุณได้ไม่ต้องกังวลว่าคุณจะใช้ไฟล์ในเครื่องเนื่องจาก URL ที่แท้จริงสำหรับบริการจะอยู่ในไฟล์ที่ส่วนการผูก


2
สิ่งนี้ได้รับการแนะนำแล้วในคำตอบที่มีอยู่นี้ทำไมต้องทำซ้ำ
Shadow Wizard is Ear For You

ทำไมไฟล์ asmx เมื่อคำถามเกี่ยวกับ wsdl?
Blue Clouds
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.