2008-08-17 23 views
0

J'ai une application Web .net qui a une application Flex intégrée dans une page. Cette application flexible appelle un service web .net. Je peux tracer la proccess d'exécution à travers le débogueur et tout semble bien jusqu'à ce que je reçois la réponse:SoapException: l'élément racine est manquant lorsque le service Web .NET appelé à partir de Flex




soap:ReceiverSystem.Web.Services.Protocols.SoapException: Server was unable to process request 

. ---> System.Xml.XmlException: Root element is missing. 

    at System.Xml.XmlTextReaderImpl.Throw(Exception e) 

    at System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res) 

    at System.Xml.XmlTextReaderImpl.ParseDocumentContent() 

    at System.Xml.XmlTextReaderImpl.Read() 

    at System.Xml.XmlTextReader.Read() 

    at System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.Read() 

    at System.Xml.XmlReader.MoveToContent() 

    at System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.MoveToContent() 

    at System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement() 

    at System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouteRequest() 

    at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message) 

    at System.Web.Services.Protocols.SoapServerProtocol.Initialize() 

    at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest 

request, HttpResponse response, Boolean& abortProcessing) 

    --- End of inner exception stack trace --- 
 

L'appel de flex semble bon, l'exécution par le webservice est bon, mais c'est la réponse que je capture via Wireshark , Qu'est-ce qui se passe ici?

J'ai essayé plusieurs méthodes web, de « Bonjour tout le monde » aux méthodes paramatized ... tout retour avec la même réponse ...

Je pensais que cela peut avoir quelque chose à voir avec le codage avec le « - - & gt ", mais je ne sais pas comment contrôler ce que .net rend comme réponse.

Répondre

1

Il semble que vous envoyez un document XML mal formé au service. Pouvez-vous utiliser Fiddler ou quelque chose comme ça pour obtenir une copie de l'appel réel qui va au service Web? Cela aiderait énormément à comprendre le problème.

+0

Si la requête était mal formée, je ne pense pas que je verrais une exécution normale via le service web avec le débogueur ... n'est-ce pas? – mmattax

0

Utilisez-vous Flex 3? Si tel est le cas, vous pouvez définir un point d'arrêt lors de l'exécution du service Web et passer directement à la structure Flex en encodant votre requête. Regardez dans mx.rpc.soap.SoapEncoder et vous serez en mesure de voir exactement ce qui va être envoyé sur le fil.

1

J'ai récemment utilisé une interface .NET REST que j'ai consommée en utilisant une application Flex. J'ai eu quelques exceptions étranges aussi et mon problème était que j'ai oublié d'inclure dans xmlns (l'espace de noms) dans l'élément de racine en envoyant des demandes. C'est une conjecture sauvage mais j'espère que ça aide.