Internet explorer 使用.NET 4.0在IE中加载.NET用户控件

Internet explorer 使用.NET 4.0在IE中加载.NET用户控件,internet-explorer,user-controls,.net-4.0,c#-4.0,Internet Explorer,User Controls,.net 4.0,C# 4.0,我有一个遗留应用程序,其中有一个用户控件,在IE中加载的网页中用作activex。在.NET 4.0之前,有用于创建代码组的安全策略和MMC控制台等。看起来.NET 4.0已经不再使用这些了 我想知道是否有人能给我一些关于如何更新我的UserControl项目的线索,以便它能与.NET4.0兼容。我已经进行了一些测试,但似乎没有一个有效。事实上,我已经注意到,如果在编译前将UserControl的.NET版本更新为4.0,它甚至不会添加到GAC下载区域。它被下载(用fiddler来测试),但它并

我有一个遗留应用程序,其中有一个用户控件,在IE中加载的网页中用作activex。在.NET 4.0之前,有用于创建代码组的安全策略和MMC控制台等。看起来.NET 4.0已经不再使用这些了

我想知道是否有人能给我一些关于如何更新我的UserControl项目的线索,以便它能与.NET4.0兼容。我已经进行了一些测试,但似乎没有一个有效。事实上,我已经注意到,如果在编译前将UserControl的.NET版本更新为4.0,它甚至不会添加到GAC下载区域。它被下载(用fiddler来测试),但它并没有被添加到GAC的下载区域。将.NET平台版本设置为3.5或更低,意味着dll已添加到GAC中,但它仍然无法从网页中使用(以前运行的旧JS代码一直说它无法使用) 在对象Y上查找成员X)

那么,有人能给我指出正确的方向吗?在.NET 4.0中,我需要做什么才能在Internet Explorer中加载.NET用户控件


谢谢。

好的,经过几次测试,我成功地让它工作了。以下是一些你应该记住的事情:

  • 无法根据.NET 4.0编译程序集,因为.NET 4.0中不推荐使用IEHost。因此,您必须根据.NET3.5进行编译
  • 由于您是根据.NET 3.5进行编译的,请不要忘记在.NET 2.0配置控制台中设置正确的安全策略
而且,最重要的是:不要忘记在正确的.NET版本中设置策略。在我的例子中,我在x64机器上运行,所以我继续安装了x64位版本。在已安装的控制台中设置正确的策略实际上不起作用,因此我必须下载并安装x86版本。这样做之后,一切都开始运转良好(毕竟,IE是作为一个32位应用程序运行的)


再一次,我真的无法理解MS在不引入新选项的情况下拒绝使用IEHost的决定。

IE中的托管控件现在被默认阻止(从v4或v4.5开始)。请参阅“Web应用程序”下的

幸运的是,使用以下注册表键重新启用功能非常容易:

Windows Registry Editor Version 5.00

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

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

x64密钥是我修复它的密钥,它使用为x32编译的.Net v3.5 SP1控件在Win7(x64)上运行IE8(x32)。

顺便说一句,你知道有一个新的GAC用于4.0程序集,对吗?还有一个细节:用户控件仍然可以加载,但需要根据3.5编译,因为IEhost已被MS弃用。有了这些信息,我能够构建一个简单的项目,所以现在我将尝试让它工作。是的,但仍然不确定如何请求特权…例如,如何配置组件,以便它可以继续使用interop将内容打印到打印机?