2013-02-27 59 views
0

我試圖在傳統ASP中構建一個網頁來檢查一系列URL的狀態。ServerXMLHTTP連接問題

我的代碼如下:

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 

的網址卻是HTTPS非標準端口號包括 (如https://somedomain.com:4433/restofurl

當我運行在Web瀏覽器的URL,它們加載很好,但是當我把它們通過上述功能,我得到:

A connection with the server could not be established 

我已經檢查我的功能與下列替代es: 1)一個不安全的URL - 這個工作正常 2)一個安全的URL沒有指定端口 - 這工作正常 3)一個安全的URL指定端口443 - 這工作正常 4)一個安全的URL指定端口443目標服務器 - 這工作正常

在此基礎上,我確信我的代碼是正確的。有沒有人有任何進一步的疑難解答建議?

+0

看看[這個問題相似的答案](http://stackoverflow.com/a/4368725/911083 )。還要考慮防火牆設置等等,換句話說,您的計算機可能正在做什麼來阻止從IIS到外部世界的連接。 – webaware 2013-02-27 21:32:28

+0

已經讀過這個答案,它不適用於這種情況 - 兩臺服務器(據我所知)正在運行IIS7。 – FrustratedWDotNet 2013-02-28 09:59:35

回答

0

問題證明:

您可以通過你的服務器忽略通過將此代碼(您發送請求之前,關閉過程)特定證書的問題,並嘗試一些值的檢查這個與我們的服務器老舊有關(仍然運行Win2003),並且它們的設置比端口號建議更不規範!

最終的解決方案是將代碼託管在某個單獨的託管上(運行更新版本的Windows的服務器上)。不理想,但至少我們已經有效。 (我們未來也有服務器升級 - 這將有望成爲最終的解決方案。)

0

這可能意味着運行代碼的服務器沒有與發送請求的服務器相同的證書。而你使用的瀏覽器確實有它們。

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 
+0

剛剛嘗試過所有這些,我仍然收到相同的錯誤。還是)感謝你的建議。 – FrustratedWDotNet 2013-02-28 15:44:34