Problem mit WSDL Datei, Exception CS0029 Temporäre Klasse kann nicht generiert werden (result=1).

25/09/2009 - 17:28 von Michael Schmitz | Report spam
Hallo NG,

Ich habe hier folgende WSDL Datei
die mir ein Java Webservice liefert:

ich vermute das Microsoft .Net irgendwie mit der Definitions von einem
Mehrdimensionalen Arrays nicht zurrecht kommt?

Wenn ich die Stelle im automatisch generierten Code hàndisch abànder in:
[System.Xml.Serialization.XmlArrayItemAttribute(typeof(mapEntry[]),
IsNullable=false)]
public mapEntry[][] persons {

Dann kommt zwar keine Exception mehr, nur klappt das Deseruialisieren
anscheind nicht mehr Richtig,
der mehr demensonale Array ist immer leer obwohl Inhalte über SOAP Kommen...


Probelmatischer Bereich:


<complexType name="returnVO">
<sequence>
<element name="keywords" nillable="true" type="tns:map" />
<element minOccurs="0" maxOccurs="unbounded" name="persons"
nillable="true" type="tns:map" />
<element name="apinformations" nillable="true" type="tns:map" />
</sequence>


Heraus kommt dann dieser Automatisch genrierter Code in der Refence.cs:
public partial class returnVO {

private mapEntry[] keywordsField;

private mapEntry[][] personsField;

private mapEntry[] apinformationsField;

/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(IsNullable=true)]
[System.Xml.Serialization.XmlArrayItemAttribute(IsNullable=false)]
public mapEntry[] keywords {
get {
return this.keywordsField;
}
set {
this.keywordsField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(IsNullable=true)]
[System.Xml.Serialization.XmlArrayItemAttribute(typeof(mapEntry),
IsNullable=false)]
public mapEntry[][] persons {
get {
return this.personsField;
}
set {
this.personsField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(IsNullable=true)]
[System.Xml.Serialization.XmlArrayItemAttribute(IsNullable=false)]
public mapEntry[] apinformations {
get {
return this.apinformationsField;
}
set {
this.apinformationsField = value;
}
}
}

Wenn ich jetzt den Webservice instanziere kommt folgende Fehlermeldung:

ERROR:Temporàre Klasse kann nicht generiert werden (result=1).
error CS0029: Der Typ TestClientTestDomWebService.TestDom.mapEntry kann
nicht implizit in TestClientTestDomWebService.TestDom.mapEntry[] konvertiert
werden.


bei System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns,
XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
bei System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[]
xmlMappings, Type[] types, String defaultNamespace, Evidence evidence,
XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable
assemblies)
bei System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings,
Type[] types, String defaultNamespace, String location, Evidence evidence)
bei
System.Xml.Serialization.XmlSerializer.GetSerializersFromCache(XmlMapping[]
mappings, Type type)
bei System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[]
mappings, Type type)
bei System.Web.Services.Protocols.SoapClientType..ctor(Type type)
bei System.Web.Services.Protocols.SoapHttpClientProtocol..ctor()
bei
TestClientTestDomWebService.TestDom.TestWebserviceObjektinformationenService..ctor()
in C:\TestDom\Reference.cs:Zeile 38.
bei TestClientTestDomWebService.FormMain.RequestWithBarcode(String
strBarcode, String strURL) in
C:\TestClientTestDomWebService\FormMain.cs:Zeile 108.
bei TestClientTestDomWebService.FormMain._btnWebStudio_Click(Object
sender, EventArgs e) in C:\TestClientTestDomWebService\FormMain.cs:Zeile 63.
Compile






##############################################################################################################################

Komplette WSDL:


<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:tns="http://objektinformationen.Testws.TestDom.de"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:plnk="http://docs.oasis-open.org/wsbpel/2...type"
name="TestWebserviceObjektinformationen"
targetNamespace="http://objektinformationen.Testws.TestDom.de"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<plnk:partnerLinkType name="TestWebserviceObjektinformationen">
<plnk:role name="TestWebserviceObjektinformationenProvider"
portType="tns:TestWebserviceObjektinformationen" />
</plnk:partnerLinkType>
<types>
<schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="http://objektinformationen.Testws.TestDom.de"
xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="mapEntry">
<sequence>
<element name="key" nillable="true" type="anyType" />
<element name="value" nillable="true" type="anyType" />
</sequence>
</complexType>
<complexType name="map">
<sequence>
<element minOccurs="0" maxOccurs="unbounded" name="mapEntry"
type="tns:mapEntry" />
</sequence>
</complexType>
<complexType name="returnVO">
<sequence>
<element name="keywords" nillable="true" type="tns:map" />
<element minOccurs="0" maxOccurs="unbounded" name="persons"
nillable="true" type="tns:map" />
<element name="apinformations" nillable="true" type="tns:map" />
</sequence>
</complexType>
<element name="TestWebserviceObjektinformationenRequest">
<complexType>
<sequence>
<element name="idkey" type="string" />
<element name="idvalue" type="string" />
</sequence>
</complexType>
</element>
<element name="TestWebserviceObjektinformationenResponse">
<complexType>
<sequence>
<element name="result" nillable="true" type="tns:returnVO" />
</sequence>
</complexType>
</element>
</schema>
</types>
<message name="TestWebserviceObjektinformationenRequestMessage">
<part name="payload"
element="tns:TestWebserviceObjektinformationenRequest" />
</message>
<message name="TestWebserviceObjektinformationenResponseMessage">
<part name="payload"
element="tns:TestWebserviceObjektinformationenResponse" />
</message>
<portType name="TestWebserviceObjektinformationen">
<operation name="process">
<input message="tns:TestWebserviceObjektinformationenRequestMessage"
/>
<output message="tns:TestWebserviceObjektinformationenResponseMessage"
/>
</operation>
</portType>
<binding name="TestWebserviceObjektinformationenBinding"
type="tns:TestWebserviceObjektinformationen">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="process">
<soap:operation
soapAction="http://objektinformationen.Testws.T...cess" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="TestWebserviceObjektinformationenService">
<port name="TestWebserviceObjektinformationenPort"
binding="tns:TestWebserviceObjektinformationenBinding">
<soap:address
location="http://localhost:8080/ode/processes/TestWebserviceObjektinformationen"
/>
</port>
</service>
</definitions>
 

Lesen sie die antworten

#1 Frank Dzaebel
25/09/2009 - 20:47 | Warnen spam
Hallo Michael,

ich vermute das Microsoft .Net irgendwie mit der Definitions von einem
Mehrdimensionalen Arrays nicht zurrecht kommt?



Mit multidimensionalen Arrays nicht, das ein beabsichtigtes Verhalten:

[PRB: XML Web Service Created with ASP.NET Does Not Support Multidimensional
Arrays]
http://support.microsoft.com/kb/316273/en-us

Aber mit Jagged Arrays (wie in Deinem Fall) ggf. schon:
http://groups.google.com/group/micr...bde835fe63


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen