如何使用javascript调用C#类的COM互操作方法

如何使用javascript调用C#类的COM互操作方法,c#,javascript,html,com,C#,Javascript,Html,Com,我创建了一个C#类的COM互操作来访问这个互操作USNGJavaScript。该类包含Addition()方法,但无法在javascript中访问该方法 代码如下所示 界面IMathInterface namespace CCWTEST { [Guid("756892A0-1242-4BF7-984D-C13E68000E8E")] [ComVisible(true)] [InterfaceType(ComInterfaceType.InterfaceIsIDispatc

我创建了一个C#类的COM互操作来访问这个互操作USNGJavaScript。该类包含Addition()方法,但无法在javascript中访问该方法

代码如下所示

界面IMathInterface

namespace CCWTEST
{
    [Guid("756892A0-1242-4BF7-984D-C13E68000E8E")]
    [ComVisible(true)]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IMathInterface
    {
        [DispId(1)]
        int Addition(int i, int j);
    }
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <object classid="CLSID:CA9AD3A7-BD31-4BE2-A780-8864D493BA5F" height="0" width="0"
        id="obj7" name="obj7">
    </object>
       <title></title>
    <script type="text/javascript">
        window.onload = onLoad;
        function onLoad() {

            alert(obj7.Addition(3,1));

        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>
课堂数学

[Guid("CA9AD3A7-BD31-4BE2-A780-8864D493BA5F")]
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("CCWTEST.ClassMath")]
public class ClassMath : IMathInterface
{
    [ComVisible(true)]
    public int Addition(int x, int y)
    {
        return x + y;
    }
}
然后创建了snk文件
CCWMathTest.snk
也注册到GACUtil中。然后使用RegAsm命令创建一个tlb文件。所有这些都成功地完成了

然后创建一个web应用程序,将类方法访问到javascript中

代码

namespace CCWTEST
{
    [Guid("756892A0-1242-4BF7-984D-C13E68000E8E")]
    [ComVisible(true)]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IMathInterface
    {
        [DispId(1)]
        int Addition(int i, int j);
    }
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <object classid="CLSID:CA9AD3A7-BD31-4BE2-A780-8864D493BA5F" height="0" width="0"
        id="obj7" name="obj7">
    </object>
       <title></title>
    <script type="text/javascript">
        window.onload = onLoad;
        function onLoad() {

            alert(obj7.Addition(3,1));

        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>

window.onload=onload;
函数onLoad(){
警报(obj7.添加(3,1));
}
运行此代码时,会出现错误“对象不支持属性或方法‘添加’”
如何使用COM interop在Javascript中访问此方法?为什么要从Javascript调用它?在页面上创建一个WebMethod,它调用COM对象,然后通过javascript中的AJAX调用这个方法。像这样:

//server side
[WebMethod]
public static string DoSomething()
{
    //call COM
    return "something";
}

//client side
$.ajax({
    type: "POST",
    url: "page.aspx/DoSomething",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: OnSuccess,
    failure: function (response) {
        alert(response.d);
        },
        error: function (response) {
            alert(response.d);
        }
});