ฉันสร้างโครงการไลบรารีบริการ WCF ในโซลูชันของฉันและมีบริการอ้างอิงถึงสิ่งนี้ ฉันใช้บริการจากไลบรารีคลาสดังนั้นฉันจึงมีการอ้างอิงจากโปรเจ็กต์แอปพลิเคชัน WPF ของฉันนอกเหนือจากไลบรารีคลาส บริการได้รับการตั้งค่าอย่างตรงไปตรงมา - เปลี่ยนเพื่อรับฟังก์ชั่นบริการ async เท่านั้น
ทุกอย่างทำงานได้ดี - จนกระทั่งฉันต้องการอัปเดตข้อมูลอ้างอิงบริการของฉัน มันล้มเหลวในที่สุดฉันจึงย้อนกลับและลองใหม่ แต่มันก็ล้มเหลวในที่สุด! ดังนั้น - การอัปเดตการอ้างอิงบริการล้มเหลวโดยไม่ต้องทำการเปลี่ยนแปลงใด ๆ ทำไม?!
ข้อผิดพลาดที่ฉันได้รับคือข้อผิดพลาดนี้:
Custom tool error: Failed to generate code for the service reference
'MyServiceReference'. Please check other error and warning messages for details.
คำเตือนให้ข้อมูลเพิ่มเติม:
Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension:
System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: List of referenced types contains more than one type with data contract name 'Patient' in
namespace 'http://schemas.datacontract.org/2004/07/MyApp.Model'. Need to exclude all but one of the
following types. Only matching types can be valid references:
"MyApp.Dashboard.MyServiceReference.Patient, Medski.Dashboard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
"MyApp.Model.Patient, MyApp.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='ISomeService']
มีคำเตือนที่คล้ายกันสองคำเช่นกัน:
Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='ISomeService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_ISomeService']
และเช่นเดียวกันสำหรับ:
Custom tool warning: Cannot import wsdl:port ..
ฉันพบว่าทั้งหมดนี้สับสน .. ฉันไม่มีคลาสผู้ป่วยในแดชบอร์ดฝั่งไคลเอ็นต์ยกเว้นคลาสที่ฉันได้รับจากการอ้างอิงบริการ แล้วมันหมายความว่าอย่างไร? แล้วทำไมจู่ๆมันถึงแสดง? จำไว้ว่า: ฉันไม่ได้เปลี่ยนแปลงอะไรเลย!
ตอนนี้พบวิธีแก้ปัญหาที่นี่แต่ไม่มีคำอธิบายว่าหมายความว่าอย่างไร ดังนั้น; ในช่อง "กำหนดค่าการอ้างอิงบริการ" สำหรับบริการฉันยกเลิกการเลือกช่องทำเครื่องหมาย "ประเภทการใช้ซ้ำในแอสเซมบลีที่อ้างอิง" สร้างใหม่ตอนนี้ทุกอย่างทำงานได้ดีโดยไม่มีปัญหา แต่จริงๆแล้วฉันเปลี่ยนอะไรไปบ้าง? สิ่งนี้จะส่งผลกระทบต่อแอปพลิเคชันของฉันหรือไม่ และเมื่อใดควรยกเลิกการเลือกนี้ ฉันต้องการใช้ประเภทที่ฉันตั้งค่า DataContract ไว้ซ้ำ แต่ไม่มีอีกแล้ว ฉันจะยังเข้าถึงผู้ที่ไม่มีการตรวจสอบนี้ได้หรือไม่