2014-06-20 9 views
6

मैं फेडेक्स सेवा को asp.net वेबसाइट में एकीकृत करने की कोशिश कर रहा हूं। मैं Fedex वेबसाइट से कोड डाउनलोड किया है, लेकिन जब मैं इस सरल कार्यक्रम चलाने मैं एक त्रुटि, चेक निम्नलिखित कोड प्राप्त करें:फेडेक्स सेवा एकीकरण त्रुटि (अस्थायी कक्षा उत्पन्न करने में असमर्थ)

static void Main(string[] args) 
{ 
    TrackRequest request = CreateTrackRequest(); 
    TrackService service = new TrackService();//I get Error Here 
    if (usePropertyFile()) 
    { 
     service.Url = getProperty("endpoint"); 
    } 
    try 
    { 
     // Call the Track web service passing in a TrackRequest and returning a TrackReply 
     TrackReply reply = service.track(request); 
     if (reply.HighestSeverity == NotificationSeverityType.SUCCESS || reply.HighestSeverity == NotificationSeverityType.NOTE || reply.HighestSeverity == NotificationSeverityType.WARNING) 
     { 
      ShowTrackReply(reply); 
     }   
     ShowNotifications(reply); 
    } 
    catch (SoapException e) 
    { 
     Console.WriteLine(e.Detail.InnerText); 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine(e.Message); 
    }   
    Console.WriteLine("Press any key to quit!"); 
    Console.ReadKey(); 
} 

डिबगिंग के बारे में बाद त्रुटि TrackService service = new TrackService(); पर हुई (लाइन 5 #):

अस्थायी कक्षा उत्पन्न करने में असमर्थ (परिणाम = 1)। त्रुटि CS0029: परोक्ष को कनवर्ट नहीं कर सकता प्रकार 'TrackWebServiceClient.TrackServiceWebReference.EMailNotificationEventType' 'TrackWebServiceClient.TrackServiceWebReference.EMailNotificationEventType []'

+0

TrackService सिर्फ एक 'POCO' है कि आप का दृष्टांत सकता है [नीचे छवि देखें]? यदि यह एक वेब सेवा है तो मुझे लगता है कि फेडएक्स एक डब्लूएसडीएल प्रदान करेगा जो आप अपने प्रोजेक्ट में वेब संदर्भ के रूप में जोड़ देंगे, और फिर 'ट्रैक' विधि को कॉल करने के लिए जेनरेट किए गए स्टब का उपयोग करें। –

उत्तर

16

इस तरह कि Wsdl.exe ग्राहक कोड उत्पन्न करता है के साथ एक समस्या हो सकती है।

आपको EmailNotificationEventType परिभाषा में डबल ब्रैकेट [][] को सिंगल [] में बदलने के लिए संदर्भ.cs फ़ाइल मैन्युअल रूप से संपादित करना होगा।

Microsoft से:

कोई संकल्प इस बिंदु पर उपलब्ध है। हालांकि, तीन समाधान उपलब्ध हैं:

  • आप Wsdl.exe का उपयोग करके मैन्युअल रूप से प्रॉक्सी वर्ग उत्पन्न कर सकते हैं और उसके बाद प्रॉक्सी वर्ग, जिसमें डेटा प्रकार का अनुचित तरीके से (उदाहरण के लिए एक दो आयामी सरणी के रूप में बनाया गया था बदलने के लिए, " कस्टम टाइप [] [] ") ताकि यह एक एकल-आयामी सरणी हो (उदाहरण के लिए," कस्टम टाइप [] ")।
  • आप वांछित वेब सेवा विवरण भाषा (डब्लूएसडीएल) में डेटा प्रकार बदल सकते हैं ताकि परिभाषा में दूसरा, वैकल्पिक तत्व शामिल हो। आप निम्न जैसे तत्व जोड़कर ऐसा कर सकते हैं: <xs:element minOccurs="0" name="dummyElement" nillable="true" type="xs:string"/>
  • आप वांछित WSDL में जटिल प्रकार को बदल सकते हैं ताकि सीमा विशेषता तत्व के हिस्से के बजाय जटिल प्रकार का हिस्सा हो। (यही कारण है, आप minOccurs स्थानांतरित कर सकते हैं और maxOccurs जटिल प्रकार के लिए जिम्मेदार बताते हैं और फिर उन्हें तत्व से हटा दें।) अधिक विवरण के लिए भी इस link

चेक।

+1

आपको ईमेल.cotificationEventType परिभाषा में डबल ब्रैकेट [] [] से एकल [] को प्रतिस्थापित करने के लिए संदर्भ.cs फ़ाइल को मैन्युअल रूप से संपादित करना होगा ... यह काम कर रहा है .. धन्यवाद –

+0

इसलिए इसने मेरी समस्या को सही किया, हालांकि, अब मैं सक्षम नहीं हूं FedEx से ईमेल नोटिफिकेशन प्राप्त करने के लिए, और FedEx यह पता नहीं लगा सकता कि अनुरोध सही क्यों है। क्या किसी और के पास यह मुद्दा है? (एफवाईआई: मैसेजिंग टीम ने पहले से ही पुष्टि की है कि fedex.com ईमेल पते पर ट्रैकिंगअपडेट्स (श्वेतसूची) है –

+0

बहुत उपयोगी उत्तर धन्यवाद :) –

0

मैंने तीसरे विकल्प की कोशिश की "आप वांछित डब्लूएसडीएल में जटिल प्रकार बदल सकते हैं ताकि सीमा गुण तत्व के हिस्से के बजाय जटिल प्रकार का हिस्सा हो। (यानी, आप minOccurs और maxOccurs को स्थानांतरित कर सकते हैं जटिल प्रकार के गुण और फिर तत्व से उन्हें हटा दें।) "और यह काम किया। नीचे समाधान:

डबल्यूएसडीएल से निकाल दिया गया minOccurs और NotificationEventsAvailable तत्व के लिए maxOccurs

Click to see the image

+0

कृपया एक कोड के बजाय * कोड * के रूप में अपना कोड शामिल करने के लिए [संपादित करें]। यह किसी और के लिए आपके उत्तर को खोजने और पढ़ने के लिए आसान बनाता है। – whrrgarbl

संबंधित मुद्दे