SoapException:从Flex调用.NET Web服务时,会丢失根元素

时间:2008-08-17 17:58:57

标签: flex web-services soap

我有一个.net Web应用程序,它在页面中嵌入了Flex应用程序。此Flex应用程序调用.net Web服务。我可以通过调试器跟踪执行过程,所有看起来都很棒,直到我得到响应:




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

来自flex的调用看起来不错,通过webservice执行是好的,但这是我通过wireshark捕获的响应,这里发生了什么?

我尝试过几种网络方法,从“Hello World”到paramatized方法......所有的回复都有相同的反应......

我认为它可能与使用“---& gt”进行编码有关,但我不确定如何控制.net呈现的响应。

3 个答案:

答案 0 :(得分:1)

我最近使用的是.NET REST界面,我使用Flex应用程序消费。我也有一些奇怪的例外,我的问题是我在发送请求时忘了在根元素中包含xmlns(命名空间)。这是一个疯狂的猜测,但我希望它有所帮助。

答案 1 :(得分:1)

看起来您可能正在向服务发送格式不正确的XML文档。你可以使用Fiddler或类似的东西来获取进入Web服务的实际调用的副本吗?这将是一个巨大的帮助,以找出问题所在。

答案 2 :(得分:0)

您使用的是Flex 3吗?如果是这样,您可以在执行Web服务时设置断点,并在编码您的请求时实际执行Flex框架。查看mx.rpc.soap.SoapEncoder,您将能够确切地看到将通过线路发送的内容。