2008-08-17 12 views
0

Ich habe eine .net-Webanwendung, die eine Flex-Anwendung in einer Seite eingebettet hat. Diese Flex-Anwendung ruft einen .net Webservice auf. Ich kann die Ausführung proccess durch den Debugger verfolgen und alle sehen gut aus, bis ich die Antwort erhalten:SoapException: Stammelement fehlt, wenn .NET-Webdienst aus Flex aufgerufen wird




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 --- 
 

Der Aufruf von flex sieht gut aus, die Ausführung durch den Webservice ist gut, aber das ist die Antwort, die ich über wireshark erfassen , Was geht hier vor sich?

Ich habe mehr Web-Methoden versucht, von „Hallo Welt“ zu paramatized Methoden ... alle Comebacks mit der gleichen Antwort ...

Ich dachte, es hat etwas mit Codierung mit dem „zu tun hat - - & gt ", aber ich bin nicht sicher, wie man steuert, was .net rendert als die Antwort.

Antwort

1

Es sieht so aus, als ob Sie möglicherweise ein schlecht formatiertes XML-Dokument an den Dienst senden. Können Sie Fiddler oder etwas ähnliches verwenden, um eine Kopie des tatsächlichen Anrufs zu erhalten, der an den Web-Service geht? Das wäre eine große Hilfe, um herauszufinden, was das Problem ist.

+0

Wenn die Anfrage falsch war, glaube ich nicht, dass ich eine normale Ausführung über den Webservice mit dem Debugger sehen würde ... würde ich? – mmattax

0

Verwenden Sie Flex 3? Wenn dies der Fall ist, können Sie einen Haltepunkt festlegen, wenn der Webservice ausgeführt wird, und das Flex-Framework durchlaufen, da es Ihre Anforderung codiert. Schauen Sie in mx.rpc.soap.SoapEncoder und Sie können genau sehen, was über die Leitung gesendet wird.

1

Ich habe kürzlich eine .NET REST-Schnittstelle verwendet, die ich mit einer Flex-App verwendet habe. Ich habe auch einige seltsame Ausnahmen und mein Problem war, dass ich vergessen habe, beim Senden von Anfragen in xmlns (den Namespace) in das Root-Element aufzunehmen. Dies ist eine wilde Vermutung, aber ich hoffe, es hilft.