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