我有一个问题正在发生,没有明显的错误信息可以解决,但我已经确定了故障点。我有一个 ActiveX 控件,它采用本地保存的 word .doc 文件,然后将其发布到另一个 URL。
Dim WebBrowser: Set WebBrowser = CreateObject("InternetExplorer.Application")
'You can uncoment next line to see form results
'WebBrowser.Visible = True
'Send the form data to URL as POST request
Dim bFormData() As Byte
ReDim bFormData(Len(FormData) - 1)
bFormData = StrConv(FormData, vbFromUnicode)
WebBrowser.Navigate URL, , , bFormData, _
"Content-Type: multipart/form-data; boundary=" + Boundary + vbCrLf
Do While WebBrowser.busy
' Sleep 100
DoEvents
Loop
WebBrowser.Quit
单词 doc 存在于用户中,C:\Users\[username]\AppData\Local\Temp\
所以这不是问题;该文件确实存在。
包含此 ActiveX 控件的 Web 应用程序的环境是IE9,并且该站点托管在具有 SSL 证书的 IIS 中。
在这些条件下它也一直有效:
- 带有SSL的IE7
- 带有SSL的IE8
- 没有SSL的 IE9
仅适用于具有以下条件的某些机器,这是所需的环境:
- 带有 SSL 的 IE9
在某些机器上它可以工作,而在其他机器上则不行。我们可以从 ActiveX 控件中找到任何错误。当 POST 工作时,我们可以在服务器上的站点上进行验证,因为有日志记录来接收文件。在它不起作用的情况下,POST 永远不会在服务器上成功发生,并且接受文件的 URL 永远不会被调用。
这告诉我 ActiveX 控件在使用文件进行 POST 的某些机器上存在问题,并且可能是 IE9 中的安全设置。但是,我们比较了工作机器和非工作机器上的所有IE 设置,找不到任何差异。
有谁知道什么安全限制可以防止这个本地保存在用户临时目录中的文件无法成功地被拾取并通过 POST 上传到 URL?它再次与带有 SSL 的 IE7 和 IE8 以及没有 SSL 的 IE9 一起工作。然而,使用SSL在 IE9 中工作是零星的。