我为COM编写了C#类,但我无法从JavaScript中使用它。实施例
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces(typeof(ICommandsEvents))]
[ProgId("Scripting.Commands")]
public class Commands : ICommands
{
public Commands()
{
}
public int CreateChannel(string channelName)
{
return 0;
}
public int GetChannelID(string channelName)
{
return CreateChannel(channelName);
}
public event ChannelEventsHandler OnChannelEvents;
}
[ComVisible(false)]
public delegate void ChannelEventsHandler(string a);
[ComVisible(true)]
[Guid("E2147768-8BA8-400b-8602-A1FDC31E6AA5")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ICommands
{
[DispId(5)]
int CreateChannel(string channelName);
[DispId(6)]
int GetChannelID(string channelName);
}
[ComVisible(true)]
[Guid("22316373-A8DF-4ace-B48C-EA9953BD73FF")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ICommandsEvents
{
[DispId(1)]
void OnChannelEvents(string a);
}
我检查了项目属性的“注册COM互操作”复选框。
当我想从这样的JavaScript创建它时。
var a = ActiveXObject(“Scripting.Commands”);
我得到“Automation Server无法创建对象”异常。我错了。
谢谢
答案 0 :(得分:1)
造成这种错误的原因很多。
GuidAttribute
但我注意到你的班级没有GuidAttribute
,因此coclass注册失败。
答案 1 :(得分:0)
确保您的网站位于客户端计算机上的“受信任的网站”中。