2012-01-02 83 views
1

我有.net用户控件,我将它显示在对象的asp.net页面。 如果usercontrol的dll的目标框架是3.5 - 一切正常。 如果我将其更改为.net 4.0 - activex不可见。.net activex不能在框架4.0工作

usercontrol非常简单。这只是一个按钮和一个标签:

[ComVisible(true)] 
public partial class UserControl1 : UserControl 
{ 
    public UserControl1() 
    { 
     InitializeComponent(); 
     label1.Text = "0"; 
    } 
    private void button1_Click(object sender, EventArgs e) 
    { 
     label1.Text = Convert.ToInt32(label1.Text) + 1 + ""; 
    } 
} 

这是html代码:

<object id="myControl2" name="myControl2" 
    classid="http:ClassLibrary1.dll#ClassLibrary1.UserControl1" 
    width="300" height="350" /> 
</asp:Content> 

为什么它不工作?

+0

是.NET 4安装在客户端上吗? – Yahia 2012-01-02 14:08:53

+0

嗨Yahia。是的,.net 4已经安装。 – MTs 2012-01-02 14:21:36

回答

1

我一直尝试相同,发现以下内容:

您无法再在Internet Explorer中托管Windows窗体控件,因为在Web上有更好的托管控件解决方案。因此,IEHost.dll和IEExec.exe程序集已从.NET Framework中删除。

从这篇文章:http://msdn.microsoft.com/en-us/library/ee941656.aspx

1

这可能是与被应用到组件的安全规则集已升级到.NET 4

组件用早期版本的.NET Framework编译的问题有1级的透明度。从以前版本升级到4.0的程序集默认具有2级透明度。您可以明确地将它们设为级别1。

尝试添加下列到AssemblyInfo.cs

using System.Security; 
// ... 
[assembly: SecurityRules(SecurityRuleSet.Level1)] 

有关安全规则的详细信息设置请参考:

+0

嗨丹尼斯。感谢您的回答。我试过这个,但它不能解决问题。 .net 3.5到.net 4.0之间是否有其他更改? – MTs 2012-01-02 14:30:22

+0

对不起,想不到别的。 – 2012-01-02 14:35:54

+0

有没有我可以调查的地方? – MTs 2012-01-02 16:19:07

2

Windows窗体控件在.NET 4版不再支持和对他们的支持已被删除。

http://msdn.microsoft.com/en-us/library/vstudio/ee941656(v=vs.100).aspx

* 在Internet Explorer主机控制*
不再可以承载Windows窗体控件在Internet Explorer中,因为有在网络上主机的控制更好的解决方案。因此,IEHost.dll和IEExec.exe程序集已从.NET Framework中删除。

您可以使用自定义的控件开发以下技术中的Web应用程序:

•您可以创建一个Silverlight应用程序并将其配置为在浏览器之外运行。有关更多信息,请参阅浏览器外支持。

•您可以构建XAML浏览器应用程序(XBAP)以利用WPF功能(需要客户端计算机上的.NET Framework)。有关更多信息,请参阅WPF XAML浏览器应用程序概述。

3

默认情况下,IE中的托管控件已被阻止(截至v4或v4.5)。请参阅'Web应用程序'下的MSDN article

幸运的是无比轻松地重新启用这些雷吉·基斯的功能:

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 

的64键是一个固定的对我来说,Win7上运行IE8(X32)(64)使用为x32编译的.Net v3.5 SP1控件。

+0

谢谢!之前我曾在很多机器上工作过,地狱是卡斯波尔,但它突然停止工作,或者很难用我必须支持的每台新Windows 7机器进行故障排除。这适用于IE 8.这个最大的问题是,你需要为32x和64x做每一个小配置(FYI,Wow6432Noted是64x机器上的32位修复)。 – ps2goat 2013-09-03 07:17:57