【问题标题】:Extending SignalR Server Hub class to create a base Hub class扩展 SignalR Server Hub 类以创建基础 Hub 类
【发布时间】:2012-04-29 15:42:05
【问题描述】:

我正在尝试扩展 SignalR Hub 类以创建一个基类,该基类是 SignalR Hub 的核心,但带有一些额外的 pzazz。

我的基类:

public class MyBaseHub : Hub 
{
    protected ISession NhSession { get; set; }

    public MyBaseHub(ISession nhSession)
    {
        NhSession = nhSession;
    }
}

我的派生类:

public class MyDerivedHub : MyBaseHub 
{                
    public MyDerivedHub(ISession nhSession) : base(nhSession) { }
}

以上构建良好,但 SignalR 生成的 javascript 引发错误,我无法在客户端上创建连接。我的基类中有更多代码,但我全力以赴尝试缩小问题范围,发现问题出在客户端。

定义 MyBaseHub hub 客户端时,生成的 Javascript 抛出异常“Uncaught SyntaxError: Unexpected Number”:

myBaseHub`1: { generated properties go in here }

所以我猜 SignalR 集线器只能被继承一次?有谁知道我正在尝试做的事情是否可行?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 signalr


    【解决方案1】:

    您的问题说基本集线器是通用的,但代码示例没有显示它。如果您将类抽象化,代理生成器将不会选择它。此外,您可以使用 [HubName] 属性重命名集线器。

    [HubName("MyHub")]
    public class MyHub2 : Hub 
    {
    }
    

    【讨论】:

    • 帮我理解一下,我也有这个问题。使用 web api 2 项目作为服务和 mvc 5 项目作为客户端应用程序,我的集线器在 web api 现在我想从客户端应用程序调用集线器方法。 #1。我无法生成自动代理可能是因为单独的项目。 #2。如果我在没有生成代理方法的情况下使用,服务器方法会被调用,我会在控制台日志中收到错误,错误调用服务器方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多