मैं ऐसे पैटर्न का अनुसरण कर रहा हूं जिसमें डब्ल्यूसीएफ सेवा के अनुरोध और प्रतिक्रिया के लिए ऑब्जेक्ट्स हैं। मेरे पास गुणात्मक अनुरोध ऑब्जेक्ट्स हैं जिनके पास समान रिटर्न प्रकार और नाम है। किसी भी तरह की सहायता का स्वागत किया जाएगा।संदेशबॉडी मेम्बर एक ही रिटर्न प्रकार और नाम अपवाद के कारण - तत्व पहले ही निर्यात किया जा चुका है
मैं निम्नलिखित अपवाद हो रही है: System.InvalidOperationException:: एक अपवाद एक डबल्यूएसडीएल निर्यात विस्तार के लिए एक कॉल में फेंक दिया गया था
एक ExceptionDetail, संभावना IncludeExceptionDetailInFaults = सच है, जिसका मूल्य है के द्वारा बनाई गई: System.ServiceModel.Description.DataContractSerializerOperationBehavior अनुबंध: http://tempuri.org/:IService ----> सिस्टम। अविश्वसनीय अपवाद: सेवा .erviceContract.IService.RetrieveUsers ऑपरेशन एक संदेश तत्व का संदर्भ देता है [http://tempuri.org/:WeekEndingId] जिसे पहले ही निर्यात किया जा चुका है सेवा से .erviceContract.IService.RetrieveDepartments ऑपरेशन। आप विधि नाम बदलकर या ऑपरेशन कंट्रैक्ट एट्रिब्यूट की नाम संपत्ति का उपयोग करके संचालन में से किसी एक का नाम बदल सकते हैं। वैकल्पिक रूप से, आप MessageContract प्रोग्रामिंग मॉडल का उपयोग कर तत्व विवरण को अधिक विस्तार से नियंत्रित कर सकते हैं।
संपादित करें: मैंने गुणों पर नाम विशेषता का उपयोग अद्वितीय नाम देने के लिए किया है और इससे समस्या हल हो जाती है लेकिन हमें सभी अनुरोधों के लिए "WeekEndingId" नाम का उपयोग करने की आवश्यकता है। संपत्ति के लिए एक ही नाम का उपयोग करते हुए मैं इसके लिए एक फिक्स कोशिश करना और ढूंढना चाहता हूं।
RetrieveDepartmentsRequest:
[MessageContract(WrapperName = "RetrieveDepartmentsRequest", WrapperNamespace = "http://Service.V1")]
public class RetrieveDepartmentsRequest
{
[MessageBodyMember(Order = 0)]
public int WeekEndingId { get; set; }
[MessageBodyMember(Order = 1)]
public string UserId { get; set; }
[MessageBodyMember(Order = 2)]
public string MachineName { get; set; }
}
RetrieveUsersRequest:
[MessageContract(WrapperName = "RetrieveUsersRequest", WrapperNamespace = "http://Service.V1")]
public class RetrieveUsersRequest
{
[MessageBodyMember(Order = 0)]
public int WeekEndingId { get; set; }
[MessageBodyMember(Order = 1)]
public string UserId { get; set; }
[MessageBodyMember(Order = 2)]
public string MachineName { get; set; }
}
IService:
नीचे सूचीबद्ध कक्षाओं कि समस्या उत्पन्न कर रहा हैं
[OperationContract]
[FaultContract(typeof(ServiceFault))]
RetrieveDepartmentsResponse RetrieveDepartments(RetrieveDepartmentsRequest request);
[OperationContract]
[FaultContract(typeof(ServiceFault))]
RetrieveUsersResponse RetrieveUsers(RetrieveUsersRequest request);
यह हमेशा एक int होना चाहिए, लेकिन बदलना यह समस्या को ठीक नहीं करता है। मैंने गुणों को अद्वितीय नाम देने के लिए नाम विशेषता का उपयोग किया है और यह समस्या को हल करता है लेकिन हम सभी अनुरोधों के लिए WeekEndingId संपत्ति नाम का उपयोग करना चाहते हैं। मैं यह देखने की कोशिश कर रहा हूं कि एक ही संपत्ति के नाम का उपयोग करते समय कोई फिक्स है या नहीं। सुझावों के लिए धन्यवाद। – Bryan
मुझ पर शर्म आती है। मेरे पास कई घटनाएं थीं जहां मेरे पास एक अलग डेटा प्रकार के साथ एक ही संपत्ति का नाम था। ऐसा प्रतीत होता है कि आपके संदेश बॉडी सदस्यों में एक अलग डेटा प्रकार के साथ आपका नाम समान नहीं हो सकता है। बहुत बहुत धन्यवाद! – Bryan