Iis 安全通道支持-经典ASP HTTP请求中出错
我有一个经典的ASP网站运行在Windows Server 2012上。一个页面使用如下代码通过https向另一个应用程序发出HTTP请求:Iis 安全通道支持-经典ASP HTTP请求中出错,iis,asp-classic,xmlhttprequest,windows-server-2012,Iis,Asp Classic,Xmlhttprequest,Windows Server 2012,我有一个经典的ASP网站运行在Windows Server 2012上。一个页面使用如下代码通过https向另一个应用程序发出HTTP请求: 子商店xml4http(url、inStr、outtr、method、xmlerror) 模糊对象 设置objhttp=Server.CreateObject(“MSXML2.ServerXMLHTTP.6.0”) objHttp.open方法,url,false 如果Method=“POST”,则 发送指令 其他的 发送 如果结束 outtr=objHt
子商店xml4http(url、inStr、outtr、method、xmlerror)
模糊对象
设置objhttp=Server.CreateObject(“MSXML2.ServerXMLHTTP.6.0”)
objHttp.open方法,url,false
如果Method=“POST”,则
发送指令
其他的
发送
如果结束
outtr=objHttp.responseText
设置objhttp=nothing
端接头
这段代码几乎在所有时间都能正常工作(每天有数千个请求),但偶尔会出现如下消息:
电话号码:-2147012739
描述:安全通道支持中发生错误
来源:msxml6.dll
应用程序最近从旧的Windows 2003服务器移动到了2012服务器,而这个问题在旧服务器上似乎从来都不是问题。此外,当这个错误发生在网站上时,我可以在VBScript中运行完全相同的代码,并且工作正常。重置应用程序池似乎会使站点能够再次执行安全HTTP请求(尽管它通常会在我到达服务器之前自行修复)。错误代码疑难解答:
一种解决方案是通过多个应用程序池或多个服务器对传入请求进行负载平衡。我几个月前遇到了这个错误。大多数情况下,此问题是由无效的SSL证书引起的。考虑到发布时您刚刚迁移到新服务器,您可能只需要重新安装SSL证书
我知道这个问题很老了,但希望其他人能从我的回答中受益 从2003年迁移到2008年R2后,我遇到了完全相同的问题,并找到了解决方案。更改:
Set objhttp=Server.CreateObject(“MSXML2.ServerXMLHTTP.6.0”)
致:
Set objhttp=Server.CreateObject(“MSXML2.XMLHTTP.6.0”)
你的问题就会消失
我试图找出这两个对象的优缺点,但还没有找到不使用XMLHTTP的理由。我也遇到过同样的问题,并尝试了各种帖子提供的许多解决方案,但最终没有成功,直到现在。我将详细说明解决方案,为我工作的参考问题,在我的情况下,它是贝宝。我还没有打开一个新的职位,因为这可能不仅仅是一个贝宝在未来的问题 该解决方案是针对类似问题发布的许多stackoverflow解决方案的组合,但这似乎是最好的添加方案 问题 尝试使用PayPal沙盒在Windows Server 2008上使用经典ASP测试PayPal IPN时返回错误“安全通道支持中发生错误” 为什么这是一个问题 贝宝要求所有与其系统的通信尽可能安全。您将需要TLS 1.2的连接。默认情况下,Windows Server 2008不是TLS 1.2 PayPal说您需要一个Verisign G5证书,这是对服务器根目录而不是运行代码的域所做的,这给混合带来了一些混乱。我也没有安装任何PayPal证书,因为我没有使用API。我相信你也不需要HTTPS站点的通信——尽管我的域使用标准的GoDaddy EV证书进行了安全保护,尽管之后我在一个非HTTPS站点上做了一个测试,这也起到了作用 我的解决方案
Server.CreateObject(“MSXML2.XMLHTTP.6.0”)
,而不是上面提到的Server.CreateObject(“MSXML2.ServerXMLHTTP.6.0”)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000800
<%
Set winhttp = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
winhttp.open "GET", "https://howsmyssl.com/a/check", False
winhttp.Send
Response.Write winhttp.responseText
%>
DefaultSecureProtocols Value Protocol enabled
0x00000008 Enable SSL 2.0 by default
0x00000020 Enable SSL 3.0 by default
0x00000080 Enable TLS 1.0 by default
0x00000200 Enable TLS 1.1 by default
0x00000800 Enable TLS 1.2 by default