2012-01-02 109 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