6

我有一个调用 .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 的“受信任的站点”中。
  • 大会由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 上都失败了。

4

3 回答 3

5

这可以通过添加在“使用 .NET 4.0 在 IE 中加载 .NET UserControls”上回答的注册表项来解决(即使这是一个 2.0 控件)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"EnableIEHosting"=dword:00000001
于 2013-10-09T15:48:21.380 回答
1

我不确定这会有所帮助,但我遇到了类似的问题,这通常已经解决了。在不工作的机器上尝试这些步骤。

  1. 将dll所在的url的域分配给Trusted siteszone。
  2. 打开Security选项卡Internet Options并单击Trusted sites
  3. 单击Default level并确保它选择了Medium。如果没有,请手动将其设置为Medium.
  4. 申请

为了更好地衡量,关闭所有 IE 窗口,然后重新启动并测试它是否有效。

关键问题是rene在他的第二条评论中链接到的页面中讨论的问题。Custom level从 IE8 起,有一个安全设置在选项列表中没有它自己的 UI 。影响它的唯一方法是设置Level-Medium或更低将其设置为,EnableMedium-high将其设置为更高Disable

现在这很可能不是您的问题,因为通常默认级别Trusted sites是中等,这将启用该设置。但至少值得一试(也许您有一些组策略或更改了受信任站点默认级别的东西)。

于 2012-09-11T09:14:05.307 回答
0

不要使用 .dll 文件。请改用 .cab。

于 2012-09-11T09:57:14.260 回答