我有一个网页调用了一个.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>
我在Windows 7上使用IE8无法使其正常运行,以下是一些注意事项:
- 程序集已经签名。
- 我目前将其放在
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上都无法工作。