使用.NET 4.5在IE中加载.NET用户控件

16

有一个类似的问题:在.Net 4.0下在IE中加载.NET UserControl 这个问题与.NET 4.5基本相同。

该问题起源于:

我有一个遗留应用程序,其中有一个UserControl,它作为一个activex在IE中加载的Web页面中使用。在 .NET 4.0之前,有安全策略和MMC控制台来创建代码组等。看起来这一切都已经消失了。

安装了.NET 4.5之后,似乎无法再使用解决方法,并且IE无法加载任何usercontrol。我担心这个功能已经被完全删除。在这种情况下,我们需要进行一些严重的重写,才能让用户安装.NET 4.5。

一些注意事项:

  • 使用.NET 4.5 RC时,一切都运行得非常完美。
  • Fuslogvw(程序集绑定日志查看器)在升级之前表现正常,但在升级之后它不记录任何内容。(并且usercontrol未被加载。)
  • 在生产中,控件必须以完全信任模式运行,但是我的所有测试都是使用不需要此模式的简单控件完成的。
  • 有任何关于此功能的建议或信息吗?

    谢谢。


    我在升级win7与.NET 4.5时遇到了类似的问题。我的同事已经成功地在win 8 x64中加载了用户控件,在下载和安装.NET 3.5框架后。目前我不确定问题出在哪里,但我也正在调查。 - Gary
    1个回答

    31
    这在MSDN的.NET 4.5应用程序兼容性页面中有记录: http://msdn.microsoft.com/en-us/library/hh367887.aspx。默认情况下,不再支持在IE中托管托管控件(请参见“Web应用程序”下半部分):

    功能: 托管自.NET Framework 1.1和2.0的浏览器控件

    更改: 在Internet Explorer中阻止了这些控件的托管。

    影响: Internet Explorer将无法启动使用托管浏览器控件的应用程序。可以通过将注册表子键HKLM / SOFTWARE / MICROSOFT / .NETFramework的EnableLegacyIEHosting值设置为1来恢复以前的行为。

    不幸的是,关于注册表键的信息似乎是不完整且错误的:

    • 该设置实际上称为“EnableIEHosting”。

    • 它必须位于HKCU Hive:HKCU\SOFTWARE\Microsoft\.NETFramework

    • 或者在HKLM hive中,但是取决于Windows的32/64位类型而位于不同的路径下:
      • 32-bit System: HKLM\SOFTWARE\MICROSOFT\.NETFramework
      • 64-bit System: HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework

    这已在Windows Server 2008R2和Windows 8上进行了测试。


    2
    谢谢!我可以补充一下,"EnableIEHosting"必须是DWord而不是QWord或字符串。 - Kipotlov
    3
    你刚刚挽救了我的工作 :-D - OnesimusUnbound
    非常感谢!我在其他地方找到了这个答案,但升级到Windows 8.1和IE 11似乎已经从我的注册表中删除了它。在下一个已经被判死刑的技术获得我们需要的能力之前,可能还是更容易迁移到Silverlight 5并在那里继续一段时间。=) - ps2goat
    看起来 MSDN 文章已经更新了正确的信息。 - fejesjoco
    在Windows 10 Build 1511机器上(如果您没有升级到Win10),HKLM\SOFTWARE\Wow6432Node\Microsoft.NETFramework不存在。 - Alexander Ryan Baggett

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接