соединение с сервером было прервано аварийно xmlhttp

#web-services #asp-classic #xmlhttprequest

#веб-службы #asp-классический #xmlhttprequest

Вопрос:

У меня есть эта страница asp test1.asp на том же сервере (другой веб-сайт), что и этот веб-сервис. Дело в том, что когда я пытаюсь запустить этот код

 sUrl = "http://chat.xxxxx.com/UCWebServices/Chat.asmx/GetChatQueueByAddress?queueAddress=SALESCHAT"

result = HTTPPost(sUrl)

response.Write result

Function HTTPPost(sUrl)
  set oHTTP = CreateObject("Msxml2.ServerXMLHTTP")
  oHTTP.open "GET", sUrl,false
  oHTTP.send <-- it fails here <-- it fails here <-- it fails here <--
  if oHTTP.Status = 200 Then
     HTTPPost oHTTP.responseText
  End if
 End Function
%>
  

я получаю следующую ошибку

msxml3.dll ошибка ‘80072efe’

Соединение с сервером было прервано аварийно

я погуглил эту проблему, думая, что, возможно, это была небольшая ошибка, которую я мог бы легко решить, но у меня возникли некоторые проблемы. Заставить его работать непросто.

если мы запускаем ту же страницу из другого места, то это работает.

Есть идеи?

Ответ №1:

Этот код ошибки ERROR_INTERNET_CONNECTION_ABORTED . Наиболее распространенными причинами являются брандмауэр или антивирус, мешающий соединению, прокси-сервер, искажающий данные соединения. Это также может быть вызвано проблемой разрешения имен — например, если имя хоста локально преобразуется в 127.0.0.1, а веб-сервер привязан только к общедоступному IP-адресу.

Ответ №2:

Другая возможность; сервер на дальнем конце может фильтровать (и отбрасывать) запросы на основе строк агента браузера, чтобы предотвратить программную очистку.

Что происходит, когда вы просто запрашиваете этот URL-адрес в обычном браузере?

Ответ №3:

Некоторым серверам требуется заголовок content-length, установленный для правильной работы HTTP POST. В нашем случае (с использованием ServerXMLHTTP) это было необходимо:

     xmlhttp.Open "POST", URL , false
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    xmlhttp.setRequestHeader "Content-Length", Len(postdata)
  

Ответ №4:

(отвечаю на старый поток, потому что это первый результат для этого сообщения в Google)

Я только что столкнулся с этой проблемой. Оказалось, что я отправлял пустую строку:

 myString = FunctionThatWasReturningEmptyString()
set oHTTP = CreateObject("Msxml2.ServerXMLHTTP")
oHTTP.open "GET", sUrl, false
oHTTP.send myString
  

Как только я исправил функцию, чтобы возвращать пустой набор XML вместо пустой строки, моя ошибка исчезла

Ответ №5:

Когда я получил эту ошибку, в журналах событий указано, что w3wp.exe (пул приложений IIS) произошел сбой.

С помощью Visual Studio я открыл файл дампа памяти, о котором упоминал Event Viewer, и в «Информации об исключении» появилось сообщение «Поток израсходовал свой стек».

Оказалось, что в коде было StackOverflowException, которое приводило к сбою пула приложений.