产品被报告了一个 Bug, 只发生在特定平台 Windows Server 2003 Standard Edition.
查看 Trace Log 发现 Wininet 调用的封装类 返回 Error 12057, 它的具体错误内容是:
-
ERROR_WINHTTP_SECURE_CERT_REV_FAILED
-
12057
Indicates that revocation cannot be checked because the revocation server was offline (equivalent to CRYPT_E_REVOCATION_OFFLINE).
-
打开
IE->Tools->Internet Options->Advanced Tab->Security Options->”Check for server certificate revocation(Requires Restart)”
-
这个选项当前为选中状态。取消这个选项,Bug 症状消失。经过测试发现只有 Windows Server 2003 Standard Edition 的 IE 默认选中该项,而且在其他平台即时此选项选中亦不会发生 Error 12057 (Microsoft’s Bug ? or with other options?)。决定通过编码解决这个问题。
-
其实编码解决这个问题倒是很简单, 在 HttpOpenRequest 后增加如下代码,设置当前 Http 连接选项取消这个检查