从javascript调用C#COM对象失败

时间:2016-01-26 14:54:58

标签: javascript c# html com

我正在尝试从javascript代码调用COM C#Object并获取一个不包含COM对象函数的对象。
我为C#COM库创建了一个安装项目。该库已签名用于COM互操作,并且在其部署的计算机上为COM寄存器签署了安装项目输出。
我看到TLB已正确导出。

C#代码:

using System;
using System.Runtime.InteropServices;

namespace YaronTestCOM
{
    [Guid("BD145EEC-ACAC-4FDB-B766-0F15CE07990F")]
    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    [ComSourceInterfaces(typeof(IComEvents))]
    public class YaronComObject : IComObject, IObjectSafety
    {
       [ComVisible(false)]
       public delegate void YaronFirstEventHandler(string args);

       public event YaronFirstEventHandler YaronFirstEvent;

       public int YaronFirstComCommand(string arg)
       {
          if (YaronFirstEvent != null)
              YaronFirstEvent(arg);
          return (int)DateTime.Now.Ticks;
       }

       public void Dispose()
       {
       }
    }

    [Guid("A3576AA4-9DE0-422D-BAA3-3FFB862E8007")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [ComVisible(true)]
    public interface IComObject
    {
       [DispId(0x10000001)]
       int YaronFirstComCommand(string arg);

       [DispId(0x10000002)]
       void Dispose();
     }

     [Guid("B551EC8B-4D19-4781-938C-9E50E70D37CD")]
     [ComVisible(true)]
     [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
     public interface IComEvents
     {
         [DispId(0x00000001)]
         void YaronFirstEvent(string args);
     }
 }

HTML + Javascrip代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <object id="publisher" name="publisher" classid="clsid:BD145EEC-ACAC-4FDB-B766-0F15CE07990F"></object>
    <title>Sender Test</title>
    <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
    <script language="javascript" type="text/javascript">
        $(document).ready(function () {
            var msgTxt = $("#msgTxt");

            $("#btnSend").click(function () {
                var msg = msgTxt.val();
                //publisher.YaronFirstComCommand is undefined!!!
                var result = publisher.YaronFirstComCommand(msg);

                alert('The message ' + msg + 'has been sent and returned ' + result);
            });
        });
    </script>
</head>
<body>
    <div>
        <input type='text' id='msgTxt' />
        <input type='button' value='Send Message' id='btnSend' />
    </div>
</body>

有什么想法吗?

0 个答案:

没有答案