我有一个调用 .Net 程序集的网页。在 Windows XP 和 IE7 中一切正常。相关部分:
<html>
<head>
<script language="javascript" type="text/javascript">
function doScript() {
myControl1.Go("value1","value2");
}
</script>
</head>
<body onload="javascript:doScript();">
<object id="myControl1" name="myControl1"
codebase="../cabs/myassembly.dll"
classid="../cabs/myassembly.dll#MyNs.MyClass"
width="1" height="1"></object>
</body>
</html>
我无法让它在带有 IE8 的 Windows 7 中工作。一些注意事项:
- 程序集是强命名的。
- 我现在正在主持这个
localhost
。- 在正在运行的机器(VirtualBox 托管的 WinXP、IE7)上,它使用我本地机器的 IP 地址(
http://1.2.3.4/...
)并且该 IP 在 IE 的“受信任的站点”中。 - 在不工作的机器(Windows 7、IE8)上,它正在使用
http://localhost/...
并localhost
位于 IE 的“受信任的站点”中。
- 在正在运行的机器(VirtualBox 托管的 WinXP、IE7)上,它使用我本地机器的 IP 地址(
- 大会由
http://localhost/cabs/myassembly.dll
. - 错误消息是 javascript 错误,“对象不支持此属性或方法”
- 当请求文件时,Fiddler 会显示 200 OK 响应,但是,似乎 dll 并未将其移至临时 Internet 文件位置。
- 该站点以“IE 7 兼容性”模式运行。
- 我已将所有 IE 权限降至最不安全的位置,它将让您在所有区域中使用,并且行为完全相同。
有没有人有任何想法试图让它工作或解决问题所在?
免责声明:是的,我知道现在是 2012 年,世界已经超越了 IE7、IE8、ActiveX 等。我们只是说我们在技术上有点落后。这是我必须解决的问题;升级到现代解决方案不会成为一种选择。
更新:我确实让它在运行 IE8 的 Windows XP VirtualBox 中工作。所以看来这个问题是 Windows 7 特有的。它在我的本地机器和运行 Windows 7、IE8 的 VirtualBox 上都失败了。