我有一个.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呈现的响应。
答案 0 :(得分:1)
看起来您可能正在向服务发送格式不正确的XML文档。你可以使用Fiddler或类似的东西来获取进入Web服务的实际调用的副本吗?这将是一个巨大的帮助,以找出问题所在。
答案 1 :(得分:1)
我最近使用的是.NET REST界面,我使用Flex应用程序消费。我也有一些奇怪的例外,我的问题是我在发送请求时忘了在根元素中包含xmlns(命名空间)。这是一个疯狂的猜测,但我希望它有所帮助。
答案 2 :(得分:0)
您使用的是Flex 3吗?如果是这样,您可以在执行Web服务时设置断点,并在编码您的请求时实际执行Flex框架。查看mx.rpc.soap.SoapEncoder,您将能够确切地看到将通过线路发送的内容。