Проблемы с подключением ServerXMLHTTP

Я пытаюсь создать веб-страницу в классическом ASP, чтобы проверить статус ряда URL-адресов.

Мой код выглядит следующим образом:

Function TestSite(sURL)

  UserAgent = "Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.1)"

  Set poster = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
  poster.open "GET", sURL, false
  poster.setRequestHeader "User-Agent",UserAgent
  poster.send

  If poster.status = 200 Then
    TestSite = poster.responseText
  Else
    ' ## ERROR ## '
    TestSite = ""
  End If
  Set poster = Nothing
End Function

Все URL-адреса представляют собой HTTPS с нестандартными номерами портов (например, https://somedomain.com:4433/restofurl)

Когда я запускаю URL-адреса в веб-браузере, они загружаются просто отлично, но когда я помещаю их через вышеуказанную функцию, я получаю:

A connection with the server could not be established

Я проверил свою функцию со следующими вариантами: 1) незащищенный URL-адрес — работает нормально 2) безопасный URL-адрес без указания порта — работает нормально 3) защищенный URL-адрес с указанием порта 443 — работает нормально 4) безопасный URL-адрес, указывающий порт 443 на целевом сервере - ЭТО работает нормально

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


person FrustratedWDotNet    schedule 27.02.2013    source источник
comment
Взгляните на этот ответ на аналогичный вопрос. Также рассмотрите настройки брандмауэра и т. Д. Или, другими словами, все, что ваш компьютер может делать, чтобы блокировать соединения IIS с внешним миром.   -  person webaware    schedule 28.02.2013
comment
Уже прочитал этот ответ, и в данном случае он неприменим - ни на одном из серверов (насколько я знаю) не работает IIS7.   -  person FrustratedWDotNet    schedule 28.02.2013


Ответы (2)


Оказалось, что проблема связана с тем, что наш сервер старый (все еще работает под управлением Win2003), а их настройка еще более нестандартна, чем можно предположить по номерам портов!

Окончательным решением было размещение кода на каком-то отдельном хостинге (на сервере с более новой версией Windows). Не идеально, но, по крайней мере, у нас это работает. (В будущем у нас также будет обновление сервера, которое, надеюсь, станет окончательным решением.)

person FrustratedWDotNet    schedule 09.04.2013

Вероятно, это означает, что сервер, на котором выполняется ваш код, не имеет тех же сертификатов, что и сервер, на который вы отправляете запрос. Хотя в используемом вами браузере они есть.

Вы можете проверить это, заставив свой сервер игнорировать определенные проблемы с сертификатом, добавив этот код (перед отправкой запроса, конечно) и попробовав некоторые значения:

Const SXH_SERVER_CERT_IGNORE_UNKNOWN_CA = 256
Const SXH_SERVER_CERT_IGNORE_WRONG_USAGE = 512
Const SXH_SERVER_CERT_IGNORE_CERT_CN_INVALID = 4096
Const SXH_SERVER_CERT_IGNORE_CERT_DATE_INVALID = 8192
Const SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS = 13056
poster.setOption 2, poster.getOption(2) - SXH_SERVER_CERT_IGNORE_CERT_DATE_INVALID
person Sander_P    schedule 28.02.2013
comment
Только что попробовал все это, и я все еще получаю ту же ошибку. Но спасибо за предложение. - person FrustratedWDotNet; 28.02.2013