2013-06-03 6 views
0

J'ai un service Web asmx basé sur .net framework 3.5. Je l'ai déployé sur le serveur et j'ai défini la version du framework pour le pool d'applications sur 4.0 (Integrated). Après avoir fait la modification si j'essaye d'envoyer une demande au service au format xml en utilisant le client soap j'obtiens l'erreur "Data Is Invalide à la racine 1 de la ligne 1" si je change la version d'exécution du pool d'applications en 2.0 cela fonctionne Je l'ai bien fonctionné sur un serveur 2003 jusqu'à maintenant. Quelqu'un pourrait-il me faire savoir ce que le problème pourrait être avec cela?Erreur de lancement de service asmx lors du déploiement sur .net framework 4.0

J'ai été en mesure de réduire le problème à un point. Le service que j'ai est un service asmx comme dit précédemment, ce que j'ai découvert est que lorsque je change le pool d'applications à 4.0 et que j'envoie une requête xml au service via le client soap, j'obtiens l'erreur. Invalide à la boucle while qui est donnée lors de la validation de la requête avec un xsd. S'il vous plaît trouver la méthode ci-dessous. l'erreur est lancée exactement à la boucle while. Je ne suis pas sûr de l'erreur. Avant que cette méthode soit appelée, la requête est sérialisée. Vous pouvez trouver ce code également ci-dessous. Je ne sais pas si l'erreur se produit pendant la sérialisation ou pendant la validation, je veux dire, peut-être la demande n'est pas sérialisée correctement, donc la validation échoue, mais je ne suis pas sûr de cela.

// sérialisation

 XmlSerializer serializer = new XmlSerializer(MyRequest.GetType()); //MyRequest is the input object. 
     MemoryStream memoryStream = new MemoryStream(); 
     UnicodeEncoding uniEncoding = new UnicodeEncoding(); 
     TextWriter textWriter = new StreamWriter(memoryStream, Encoding.Unicode); 
     serializer.Serialize(textWriter, MyRequest); 
     int count = (int)memoryStream.Length;    
     byte[] requestArray = new byte[count];   
     memoryStream.Seek(0, SeekOrigin.Begin); 
     memoryStream.Read(requestArray, 0, count); 
     string stringXML= uniEncoding.GetString(requestArray).Trim(); 

    public bool ValidateXML(string stringXML, Uri schemaURI) 
    { 
     XmlSchemaSet sc = null; 
     XmlReaderSettings settings = null; 
     XmlReader reader = null; 
     StringReader txtReader = null; 

     try 
     { 
      // Create the XmlSchemaSet class. 
      sc = new XmlSchemaSet(); 

      sc.Add(null, schemaURI.ToString()); 

      // Set the validation settings. 
      settings = new XmlReaderSettings(); 
      settings.ValidationType = ValidationType.Schema; 
      settings.Schemas = sc; 

      txtReader = new StringReader(stringXML);   
      // Create the XmlReader object. 
      reader = XmlReader.Create(txtReader, settings);                
      while (reader.Read()) 
      {    
      } 
      reader.Close(); 
      return true; 
     }      
    } 
+0

Avez-vous essayé de le construire avec .NET 4.0? –

+0

oui, essayé aussi, mais toujours la même erreur – SonuShaik

+0

Plus de détails de ce problème sont ci-dessous. – SonuShaik

Répondre

0

On dirait que le problème est pas tout à fait avec le cadre, il est peut-être les classes que vous utilisez pour la sérialisation qui est à l'origine. remplacer le code de sérialisation entier comme ci-dessous. ce shud résoudre le problème.

XmlSerializer xsSubmit = new XmlSerializer(typeof(MyObject)); 
var subReq = new MyObject(); 
StringWriter sww = new StringWriter(); 
XmlWriter writer = XmlWriter.Create(sww); 
xsSubmit.Serialize(writer, subReq); 
var xml = sww.ToString(); // Your xml 
+0

merci pour la réponse, cela a résolu le problème. – SonuShaik

Questions connexes