2014-06-20 34 views
6

Fedex Service benim asp.net web sitesine entegre çalışıyorum. Ben Fedex web sitesinden kod indirdiğiniz ama bu basit programı çalıştırdığınızda bir hata, Kontrol aşağıdaki kodu almak:Fedex Hizmet Entegrasyonu Hatası (geçici bir sınıf oluşturamıyor)

hata ayıklamayı ardından hata TrackService service = new TrackService(); oluştu
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(); 
} 

(5 hat #):

Geçici sınıf oluşturulamadı (sonuç = 1). hata CS0029: örtülü tip 'TrackWebServiceClient.TrackServiceWebReference.EMailNotificationEventType' dönüştürülemez 'TrackWebServiceClient.TrackServiceWebReference.EMailNotificationEventType []'

+0

TrackService sadece 'POCO' sen örneğini mi [aşağıdaki resme bakın] WSDL kaldırıldı? Bu bir web hizmeti ise, FedEx'in bir web başvurusu olarak projenize ekleyeceğiniz bir WSDL sağlayacağını düşünürdüm ve sonra 'iz' yöntemini çağırmak için oluşturulan saplamayı kullanın. –

cevap

16

Bu Wsdl.exe istemci kodu oluşturur şeklinden kaynaklanan bir sorun olabilir.

[][] çift köşeli parantezleri [] tanımında EmailNotificationEventType tanımında değiştirmek için Reference.cs dosyasını el ile düzenlemeniz gerekir.

Microsoft Gönderen:

bu noktada mevcut çözüm bulunmamaktadır. Ancak üç geçici çözüm vardır:

  • Sen Wsdl.exe kullanarak el proxy sınıfı oluşturmak ve sonra veri türü uygunsuz örneğin (iki boyutlu dizi olarak oluşturulduğu proxy sınıf değiştirebilir, " CustomType [] [] ") böylece tek boyutlu bir dizi (örneğin," CustomType [] ").
  • Veri türünü, istenen Web Hizmetleri Açıklama Dili'nde (WSDL) değiştirebilirsiniz, böylece tanımda ikinci, isteğe bağlı bir öğe bulunur. Aşağıdaki gibi bir öğe ekleyerek yapabilirsiniz: <xs:element minOccurs="0" name="dummyElement" nillable="true" type="xs:string"/>
  • İstenen WSDL'de karmaşık türünü değiştirebilirsiniz, böylece sınır öznitelikleri, öğenin parçası olmak yerine karmaşık türün bir parçası olur. (Yani minOccurs taşıyabilirsiniz ve maxOccurs karmaşık tipine niteliklerini ve ardından elemana kaldırmak söz konusudur.) Daha fazla açıklama için de bu link

kontrol edin.

+1

EmailNotificationEventType tanımında çift köşeli parantezleri [] [] yerine tek [] olarak değiştirmek için Reference.cs dosyasını elle düzenlemek zorundasınız ... işte çalışıyor .. teşekkürler –

+0

Bu sorun düzeltildi, ancak şu anda mümkün değil FedEx'ten EmailNotifications almak ve FedEx, isteğin neden doğru olduğunu anlayamıyor. Bu sorunu başka kim yaptı? (FYI: Mesajlaşma ekibi zaten, (fedex.com e-posta adresinin) izleme listesinin beyaz listeye alındığını onayladı) –

+0

çok yararlı cevap teşekkürler :) –

0

Üçüncü seçeneği denedim "İstenen WSDL'deki karmaşık türünü değiştirebilirsiniz, böylece sınır öznitelikleri, öğenin bir parçası olmak yerine karmaşık türün parçasıdır." Yani, minOccurs ve maxOccurs'ları taşıyabilirsiniz. Karmaşık tipte öznitelikler ve sonra bunları elementten çıkarır.) "ve işe yaradı. Aşağıdaki çözüm:

NotificationEventsAvailable elemanı için minOccurs ve maxOccurs

Click to see the image

+0

Lütfen kodunuzu bir resim yerine * kod * olarak eklemek için lütfen [düzenle]. Başka birinin cevabını aramasını ve okumasını kolaylaştırır. – whrrgarbl

İlgili konular