SoapException: корневой элемент отсутствует, происходит, когда веб-сервис .NET вызывается из Flex - PullRequest
0 голосов
/ 17 августа 2008

У меня есть веб-приложение .net, в которое встроено приложение Flex на странице. Это гибкое приложение вызывает веб-сервис .net. Я могу отследить процесс выполнения через отладчик, и все выглядит великолепно, пока я не получу ответ:




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 выглядит хорошо, выполнение через веб-сервис хорошее, но этот ответ я фиксирую через wireshark, что здесь происходит?

Я пробовал несколько веб-методов, от "Hello World" до парализованных методов ... все возвращаются с одинаковым ответом ...

Я думал, что это как-то связано с кодировкой "--- & gt", но я не уверен, как контролировать то, что .net отображает как ответ.

Ответы [ 3 ]

1 голос
/ 28 сентября 2008

Недавно я использовал интерфейс .NET REST, который я использовал в приложении Flex. Я также получил некоторые странные исключения, и моя проблема заключалась в том, что я забыл включить xmlns (пространство имен) в корневой элемент при отправке запросов. Это дикое предположение, но я надеюсь, что это поможет.

1 голос
/ 19 августа 2008

Похоже, вы отправляете в сервис плохо сформированный XML-документ. Можете ли вы использовать Fiddler или что-то подобное, чтобы получить копию фактического звонка, который идет в веб-службу? Это очень помогло бы выяснить, в чем проблема.

0 голосов
/ 17 сентября 2008

Используете ли вы Flex 3? Если это так, вы можете установить точку останова при запуске веб-службы и фактически пройти через среду Flex, поскольку она кодирует ваш запрос. Загляните в mx.rpc.soap.SoapEncoder, и вы сможете точно увидеть, что будет отправлено по сети.

...