从IE8中的OBJECT标记调用.Net程序集

时间:2012-08-31 16:22:21

标签: asp.net .net internet-explorer internet-explorer-8

我有一个调用.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上都失败了。

3 个答案:

答案 0 :(得分:5)

通过添加"Loading .NET UserControls in IE with .NET 4.0"上回答的注册表项解决了这个问题(即使这是2.0控件)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"EnableIEHosting"=dword:00000001

答案 1 :(得分:1)

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

  1. dll所在的网址分配到Trusted sites区域。
  2. 打开Security中的Internet Options标签,然后点击Trusted sites
  3. 点击Default level并确保选择Medium。如果没有,请手动将其设置为Medium
  4. 应用
  5. 为了更好地衡量,请关闭所有IE窗口,然后重新启动并测试它是否有效。

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

    现在这可能不是你的问题,因为Trusted sites的默认级别通常是中,这将启用该设置。但至少值得尝试(可能你有一些组策略或者某些东西已经改变了可信站点的默认级别)。

答案 2 :(得分:0)

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