2010-10-21 5 views
0

J'essaie de créer un service Web simple avec le schéma XML suivant en réponse à une opération.Webservices Erreur liée au schéma XML

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="TResponse"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="STATUS" type="xs:string" minOccurs="0" /> 
     <xs:element name="DESCRIPTION" type="xs:string" minOccurs="0" /> 
     <xs:element name="Result" minOccurs="0" maxOccurs="unbounded"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="List" minOccurs="0" maxOccurs="unbounded"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="Attributes" minOccurs="0" maxOccurs="unbounded"> 
         <xs:complexType> 
         <xs:sequence> 
          <xs:element name="AttrName" type="xs:string" minOccurs="0" /> 
          <xs:element name="AttrValue" type="xs:string" minOccurs="0" /> 
         </xs:sequence> 
         </xs:complexType> 
        </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 

Le schéma ci-dessus a été créé à l'aide de l'outil XSD.exe de VS 2005 à l'aide du code XML suivant.

<?xml version="1.0" encoding="utf-8"?> 
    <TResponse> 
     <STATUS>string</STATUS> 
     <DESCRIPTION>string</DESCRIPTION> 
     <Result>  
     <List>   
      <Attributes> 
     <AttrName>Test1</AttrName> 
      <AttrValue>TestV1</AttrValue> 
     </Attributes>  
     </List> 
     </Result> 
    </TResponse> 

Maintenant, avec l'aide de l'outil XSD.exe j'ai généré les classes C# pour ce schéma XML et utilisé cette classe comme message dans mon application webservice. Tout va bien ici jusqu'à ce que j'essaie de faire un simple appel du client créé en utilisant le framework .net.

L'erreur que je reçu est

System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.InvalidOperationException: Unable to generate a temporary class (result=1). 
error CS0030: Cannot convert type 'TResponseResultListAttributes[][]' to 'TResponseResultListAttributes[]' 

    at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence) 
    at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies) 
    at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence) 
    at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings, Evidence evidence) 
    at System.Web.Services.Protocols.SoapServerType..ctor(Type type, WebServiceProtocols protocolsSupported) 
    at System.Web.Services.Protocols.SoapServerProtocol.Initialize() 
    at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response) 
    at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing) 
    --- End of inner exception stack trace --- 

J'ai trouvé un article qui semble parler quelque chose lié à mon erreur, mais qui ne me aide.

Un aperçu s'il vous plaît.

+0

Le lien vers l'article est http://www.kerrywong.com/2006/11/04/xml-serialization-surprise-in-vs-2005/ – Aakash

+0

Exactement ce que le message d'erreur vous indique. Vous avez probablement créé la classe de schéma incorrecte, ce qui n'est pas surprenant en utilisant l'inférence pour créer un schéma. Il vaudrait mieux rouler à la main. – leppie

+0

Merci leppie mais j'ai essayé de le faire sans succès. – Aakash

Répondre