0

我有一个在页面中嵌入了 Flex 应用程序的 .net Web 应用程序。这个 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 的调用看起来不错,通过 web 服务的执行很好,但这是我通过 wireshark 捕获的响应,这是怎么回事?

我尝试了几种网络方法,从“Hello World”到参数化方法……都以相同的响应返回……

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

4

3 回答 3

1

看起来您可能正在向服务发送格式不正确的 XML 文档。您可以使用 Fiddler 或类似的东西来获取到 Web 服务的实际调用的副本吗?这对于找出问题所在有很大帮助。

于 2008-08-18T22:07:24.877 回答
1

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

于 2008-09-28T05:04:59.060 回答
0

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

于 2008-09-17T00:47:15.390 回答