网页中的ActiveX不起作用(显示为损坏的图像)

时间:2012-09-07 08:57:17

标签: c# asp.net .net-3.5 activex

我创建了一个非常简单的用户控件ActiveX,其中包含一个显示MessageBox的简单按钮。

namespace AxCPW
{
    public partial class Test: UserControl, ITest
    {
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Hello World");
        }
    }
}

接下来,我在asp.net项目中创建了一个网页,并在其中嵌入了我的usercontrol。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
    <object id="myControl" name="myControl" classid="AxCPW.dll#AxCPW.Test" width="100" height="100">
    </object>
</body>
</html>

问题是我看到一个损坏的图像而不是我的UserControl,我已经在IE9上添加了我的localhost网络服务器可信站点但是没有用。

我知道ActiveX是一个过时的解决方案,但我需要使用第三部分sdk dll(通过USB与设备通信),我认为唯一可用的解决方案就是这个

1 个答案:

答案 0 :(得分:0)

ActiveX是一种COM技术(本质上是“COM-in-a-pagepage”),并不了解.NET技术。

要使用在C#中开发的ActiveX控件,您需要expose the interface through COM。此外,您需要使用RegAsm注册DLL,而不是gacutil,因为您需要写入注册表的COM注册信息,而不是添加到GAC的程序集。最后,classid属性必须是COM GUID,而不是“友好名称”。

如果您需要自动部署ActiveX控件,并使用GUID进行示例HTML,请查看我对Deploy C# ActiveX in a CAB for Internet Explorer use的回答。