C# 当HTML页面托管在IIS上时,ActiveX控件不工作

C# 当HTML页面托管在IIS上时,ActiveX控件不工作,c#,javascript,html,C#,Javascript,Html,我已经创建了MS Visual Studio项目来创建ActiveX控件。为此,我执行了前面提到的步骤。我创建了一个名为HelloWorld.cs的类文件,并创建了一个返回“HelloWorld..”的方法。我执行的步骤是。。创建新项目->新建类->使用HelloWorld.snk文件对项目进行签名。在类文件中,我添加了“ProgId”、“Guid”、“ComVisible”来实现我的逻辑 using System; using System.Runtime.InteropServices;

我已经创建了MS Visual Studio项目来创建ActiveX控件。为此,我执行了前面提到的步骤。我创建了一个名为HelloWorld.cs的类文件,并创建了一个返回“HelloWorld..”的方法。我执行的步骤是。。创建新项目->新建类->使用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!";
        }
    }
  }
cmd的响应是:“Type Registers Successfully”。然后我在文件系统中创建了示例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>

ActiveX网页
试一试{
var obj=document.ACtive;
如果(obj){
警报(obj.SayHello());
}否则{
警报(“未创建对象!”);
}
}捕获(ex){
警报(“发生某些错误,错误消息为:“+ex.Description”);
}

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

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

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


还要检查您的internet区域和安全设置,特别是您可以尝试将有问题的站点添加到受信任的站点区域。

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

以管理员模式运行cmd

键入cd C:\Windows\Microsoft.Net\Framework\

例如,如果您正在使用.net 4,则
C:\Windows\Microsoft.net\Framework\v4.0.30319
enter, 然后键入
regasm

示例:
C:\Windows\Microsoft.Net\Framework\v4.0.30319>regasm d:\myfile.dll
enter。 您将收到以
类型成功注册
结尾的消息。如果未注册,请检查应用程序的版本

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

您是否已在IIS服务器上安装ActiveX组件?您可能还需要检查internet区域和安全设置。你可以将有问题的站点添加到你的受信任站点区域,看看这是否有帮助。谢谢你的回复,它对我有用。我已经将我的网站添加为IE中的受信任站点,并设置了“已初始化并为activex控件编写脚本,但未标记为脚本安全”。这对我很有用。
<!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>