当HTML页面托管在IIS上时,ActiveX控件不起作用

ActiveX control is not working when HTML page is hosted on IIS

本文关键字:上时 ActiveX 控件 不起作用 IIS HTML      更新时间:2023-09-26

我创建了用于创建ActiveX控件的MS Visual Studio项目。为此,我执行了此处提到的步骤。我创建了一个名为HelloWorld.cs的类文件,并创建了一种返回"Hello World.."的方法。。创建新项目->新建类->使用HelloWorld.snk文件对项目进行签名。在类文件中,我添加了"ProgId","Guid","ComVisible"来实现我的逻辑

using System;
using System.Runtime.InteropServices;
namespace ActiveXClass
{
    /// <summary>
    /// Demo`enter code here` HelloWorld class
    /// </summary>
    [ProgId("ActiveXClass.HelloWorld")]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    [Guid("415D09B9-3C9F-43F4-BB5C-C056263EF270")]
    [ComVisible(true)]
    public class HelloWord
    {
        [ComVisible(true)]
        public String SayHello()
        {
            return "Hello World!";
        }
    }
  }

我还在AssemblyInfo.cs文件中设置了[assembly:ComVisible(true)]。然后我创建了一个示例HTML页面,它将创建ActiveX类的Object,然后调用SayHello()方法。然后,我通过以下步骤为上述项目创建了msi。新建项目->其他项目类型->安装和部署->Visual Studio安装程序->名为Setup1的安装项目。接下来,我必须通过以下命令注册我的ActiveX项目。

regasm /codebase "FULLPATH OF MY ACTIVEX DLL"

cmd的响应是:"Type Registers Successfully。"然后我在FileSystem中创建了示例HTML页面,例如"D:''ActiveX''Test.HTML"。下面是我的示例HTML代码注意:我尚未创建.cab文件

<!DOCTYPE>
   <html>
   <head>
          <title>ActiveX webpage</title>
   </head>
   <body>
    <OBJECT id="ACtive" classid="clsid:415D09B9-3C9F-43F4-BB5C-C056263EF270">
    </OBJECT>  
    <script type="text/javascript">
        try {
            var obj = document.ACtive;
            if (obj) {
                alert(obj.SayHello());
            } else {
                alert("Object is not created!");
            }
        } catch (ex) {
            alert("Some error happens, error message is: " + ex.Description);
        }
    </script>

我已经通过文件系统运行了这个页面(例如D:''ActiveX''Test.HTML),它会成功弹出消息"Hello World…"。但当我在IIS服务器上添加此HTML文件时,当我浏览它时,它会返回消息"发生了一些错误,错误消息是:未定义"。那么这里出了什么问题。。?我也创建了相同的C#网页。但结果是一样的。IIS端或IE端是否存在任何配置问题。我已经试验过很多,但都失败了。还有一件事,当我在像localhost:8080/Test.html这样的本地主机上运行该网页时,它会运行,但当我用IP地址替换它时,它失败了。例如http://192.168.1.xx:8080/Test.html请让我离开这里。我对ActiveX组件非常陌生。期待解决方案。

任何想法都将不胜感激。请帮忙。提前感谢。

首先在要运行activex、的pc中注册dll

以管理员模式运行cmd,

类型CCD_ 3。

例如,如果您正在使用.net 4,则C:'Windows'Microsoft.Net'Framework'v4.0.30319输入,然后键入regasm <path of your dll>

示例:C:'Windows'Microsoft.Net'Framework'v4.0.30319> regasm d:'myfile.dll输入。您将收到以type registered successfully结尾的消息。如果不是,请检查您的应用程序的版本

然后检查你的IE安全。转到Internet Explorer,工具->Internet选项->单击高级选项卡->安全检查前三个选项。然后在安全选项卡上单击受信任的站点,单击按钮"站点",然后将您的url添加到受信任的网站列表中(http://192.168.10.xx/*)然后转到自定义级别,找到Activex控件和插件,并选中启用除"只允许批准的域在没有提示的情况下使用Activex"之外的所有内容然后重新启动IE

尝试在IIS服务器上安装ActiveX组件。

还要检查您的互联网区域和安全设置,特别是您可能会尝试将有问题的网站添加到您的可信网站区域。