Сведения о вопросе

DED

21:47, 10th August, 2020

Теги

flex   web-services   soap    

Исключение soapexception: отсутствует корневой элемент возникает, когда веб-служба .NET называется от Flex

Просмотров: 729   Ответов: 3

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




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" до параматизированного methods...all возвращения с тем же ответом...

Я подумал, что это может иметь какое-то отношение к кодированию с помощью "---&gt",, но я не уверен, как управлять тем, что .net выводит в качестве ответа.



  Сведения об ответе

dumai

20:35, 23rd August, 2020

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


  Сведения об ответе

screen

11:36, 10th August, 2020

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


  Сведения об ответе

pumpa

19:56, 17th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться