У меня есть ASP .NET SOAP Service, который вызывается с помощью PHP-класса SoapClient.Как правило, метод обслуживания, который я вызываю, работает, но в некоторых случаях он постоянно терпит неудачу.Если произойдет сбой, служба истечет примерно через 90 секунд.
Я проследил основную причину проблемы до службы ASP .NET, где она пытается десериализовать предоставленный XML.В журналах кажется, что служба .NET считает, что XML урезан:
System.Xml.XmlException: произошел неожиданный конец файла.Следующие элементы не закрыты: ns1: Описание, [...], SOAP-ENV: Тело, SOAP-ENV: Конверт
System.InvalidOperationException: В документе XML есть ошибка (2, 9383)
В моем PHP-коде я записываю XML, использованный в запросе, вызывая $ client -> __ getLastRequest ().Предоставляемый XML является допустимым и не содержит каких-либо ненормальных символов, которые могут нарушить десериализацию.
Чтобы сделать вещи более странными, это не только один запрос, который терпит неудачу.Я могу последовательно сделать три запроса неудачными.
Два запроса имеют одинаковую длину и терпят неудачу с одним и тем же символом.Длина запроса XML составляет 9576 символов, заголовок Content-Length, который публикуется PHP, равен 9615, а служба не работает с символом 9383. Если я добавлю, удалю или изменю что-либо до рассматриваемого символа (буквы)d "), запрос проходит.Неудачный символ - это одна и та же буква в одном и том же месте в обоих запросах.
Хотя это так, третий ошибочный запрос имеет длину 4812 символов, заголовок Content-Length равен 4852 и не выполняется.символ 3863. Символ в данном случае не является тем же символом (это буква «g»), и он не находится в одном и том же узле XML.
Если я добавлю что-либо к этим запросам или даже удаляю элементы из них,они проходят хорошо.Мне не нужно удалять или изменять конкретный элемент, если он происходит до символа, в котором происходит десериализация.
Кто-нибудь знает, почему этот тайм-аут может происходить для этих запросов?Любые предложения для потенциальных обходных путей?