【发布时间】:2013-07-29 12:26:44
【问题描述】:
我创建了用于创建 ActiveX 控件的 MS Visual Studio 项目。为此,我执行了here 中提到的步骤。我创建了一个名为 HelloWorld.cs 的类文件,并创建了一个返回“Hello World..”的方法。我执行的步骤是.. Created New Project -> New Class-> Sign the Project using HelloWorld.snk 文件。在类 File 中,我添加了“ProgId”、“Guid”、“ComVisible”来实现我的逻辑。这是我的代码,即 HelloWorld.cs。
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 类的对象,然后调用 SayHello() 方法。 然后我按照以下步骤为上述项目创建了 msi。新建项目->其他项目类型->安装和部署->Visual Studio安装程序->安装项目名为Setup1。接下来我通过以下命令注册了我的 ActiveX 项目。
regasm /codebase "FULLPATH OF MY ACTIVEX DLL"
来自 cmd 的响应是:“类型注册成功。”然后我在文件系统中创建了示例 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这样在localhost上运行该网页时,还有一件事会运行,但是当我用IP地址替换它时它会失败。例如http://192.168.1.xx:8080/Test.html
请让我摆脱这一切。我对 ActiveX 组件非常陌生。
期待解决方案。
任何想法将不胜感激。 请帮忙。 提前致谢。
【问题讨论】:
-
您是否在带有 IIS 的服务器上安装了 ActiveX 组件?您可能还想检查您的 Internet 区域和安全设置。您可以将相关站点添加到您的受信任站点区域,看看是否有帮助。
-
感谢您的回复,它对我有用。我已将我的网站添加为 IE 中的受信任站点,并设置“初始化和脚本 activex 控件未标记为可安全执行脚本”。这对我有用。
标签: c# javascript html