2012-05-09 9 views
9

Verileri bir 3. Taraf web hizmetine göndermekle görevlendirildim, bir sınama sundular Ancak, bir Java istemcisi ile çalıştığı kanıtlanmış olan hizmet .Net'de yok. Ben hizmet proxy oluşturmak ve ya hizmet örneğini veya istek nesnesi tefrikaOluşturulan bir XSD'yi, kural dışı durumun neden olduğu bilinen bir .Net hatasını üstesinden gelmek için doğru şekilde nasıl değiştirebilirim "cs0030: Geçici bir sınıf üretilemiyor"

, aşağıdaki hatayı alıyorum: Bu hizmet Java kullanır ve hiçbir sorun vardı bize gönderilen

Unable to generate a temporary class (result=1). 
error CS0030: Cannot convert type 'TestStarXML.wsStarService.VSOptionInclusiveSetType[]' to 'TestStarXML.wsStarService.VSOptionInclusiveSetType' 
error CS0030: Cannot convert type 'TestStarXML.wsStarService.VSOptionConflictSetType[]' to 'TestStarXML.wsStarService.VSOptionConflictSetType' 
error CS0030: Cannot convert type 'TestStarXML.wsStarService.ColorRequirementSetType[]' to 'TestStarXML.wsStarService.ColorRequirementSetType' 
error CS0030: Cannot convert type 'TestStarXML.wsStarService.ColorExclusionSetType[]' to 'TestStarXML.wsStarService.ColorExclusionSetType' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.VSOptionInclusiveSetType' to 'TestStarXML.wsStarService.VSOptionInclusiveSetType[]' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.VSOptionConflictSetType' to 'TestStarXML.wsStarService.VSOptionConflictSetType[]' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.ColorRequirementSetType' to 'TestStarXML.wsStarService.ColorRequirementSetType[]' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.ColorExclusionSetType' to 'TestStarXML.wsStarService.ColorExclusionSetType[]' 

3 Tarafı Test hizmetinden servis proxy'si oluşturma. Şimdiye kadarki anlayışım, WSDL dosyası için XSD'yi üreten bir Net (see here) hatası olmasıdır. elde kukla özellik ekleyerek tek şey bir derleme süresini azaltmak için

<xs:complexType name="VSInclusivesOptionType"> 
    <xs:sequence> 
     <xs:element minOccurs="0" maxOccurs="unbounded" name="VSOptionInclusiveSet" type="tns:VSOptionInclusiveSetType" /> 
    </xs:sequence> 
    <xs:attribute name="tmp" type="xs:string" /> <!-- this is all I have added (for each of the types in the exception message) --> 
    </xs:complexType> 
    <xs:complexType name="VSOptionInclusiveSetType"> 
    <xs:sequence> 
     <xs:element minOccurs="0" name="SetID" type="ns2:IdentifierType" /> 
     <xs:element minOccurs="0" name="NumberOfOptionsNumeric" type="xs:decimal" /> 
     <xs:element minOccurs="0" maxOccurs="unbounded" name="VSOption2" type="tns:VSOption2Type" /> 
    </xs:sequence> 
    </xs:complexType> 

oldu: cevap here yılında

, bu kukla özelliklere sahip oluşturulan XSD değiştirerek, bu yüzden önerildiği gibi kukla niteliğini eklendi bahsedenler projeden dakikalara ve saniyeye kadar.

Bunun haricinde, VS2008 bu değişiklikleri farketmemiş gibi görünüyor - Hala nesneyi serileştiremiyorum ya da yukarıda belirtilen istisnayı almadan hizmeti sunamıyorum, neyi eksik veya yanlış yapıyorum?

+0

Bağlantılı yayınlarda önerilen çözümü tam olarak uyguladığınız anlaşılan bir denetim sorusu. VSInclusivesOptionType ile sorun çözülmüştür ve şimdi hata iletisinde başvurulan diğer (3) veri türlerinin yuvalanmalarına karşı çalışıyorsunuz? (VSOptionConflictSetType; ColorRequirementSetType; ColorExclusionSetType)? – dcbyers

+0

@dcbyers Yukarıdaki 4 tür için yukarıdaki değişiklikleri uygulamıştım. –

cevap

7

XSD dosyasını sorgumda olduğu gibi değiştirmeniz gerekir, ancak siz aynı klasördeki Reference.cs (veya .vb) dosyasını değiştirmek zorundasınız. [] [] Ile [] ile bir değiştirmeyi yaptım [] (veya()() ile() in.

Yaptığım tüm okumalarda, hiçbir cevap her ikisini de yaptığını söyledi, bu yüzden noktayı kaçırdım - umarım bu cevap başkalarına yardım eder.

+0

Bu soru ve cevap için teşekkürler. İşte 2016 yılında hata hala var :) – dariol

5

Doğru, WSDL aracında bir hata var. Hatayı düzeltmek için oluşturulan dosyaları açmalı ve 'TestStarXML.wsStarService.VSOptionConflictSetType' öğesinin bazılarını 'TestStarXML.wsStarService.VSOptionConflictSetType []' olarak değiştirmelisiniz.

Çalışırken, hangileri olduğunu kolaylıkla bulabilirsiniz. Türleri değiştirdiğinizde servis iyi çalışır.

+0

Görünüşe göre, (görebileceğiniz gibi) dosyada [] yok. Yani sadece onları kaldırmak için bir durum değil? –

+0

Hangi dosyada düzenleme yapmalıyım? –

+1

reference.cs dosyadır, ya da el ile oluşturduysanız (wsdl aracı), out put dosyasını düzenlemelisiniz. [] Öğesini eklemeniz veya kaldırmanız gerektiğinden emin değilim. Doğru hatırladığım gibi bir sınıf tanım hattındaydı. – Peter