我有一个调用.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的“可信站点”中.
>程序集由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上都失败了.
解决方法
这是通过添加在
“Loading .NET UserControls in IE with .NET 4.0”上回答的注册表项来解决的(即使这是一个2.0控件)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework] "EnableIEHosting"=dword:00000001