重命名集线器

时间:2015-04-28 13:43:11

标签: asp.net signalr signalr-hub

尝试重命名SignalR集线器时遇到问题。请注意,我没有使用SignalR生成的代理。

我有一个之前定义为:

的SignalR Hub
[HubName("WidgetHub")
public WidgetHub : Hub
{
...
}

使用以下代码在客户端上创建代理:

this.proxy = connection.createHubProxy('WidgetHub');

this.proxy.on('WidgetUpdated', function() {
  $rootScope.$emit('refreshWidget');
});

return connection.start().then(function(connectionObj) {
  return connectionObj;
}, function(error) {
  console.log(error)
  return error.message;
});
};

这是正常的,但是,我现在想要重命名集线器。我想通过在[HubName()]属性中指定一个新名称可以很容易地做到这一点:

[HubName("CloudHub")
public WidgetHub : Hub
{
...
}

更新客户端代理创建以引用新的集线器名称:

this.proxy = connection.createHubProxy('CloudHub');

但是,当我这样做时,客户端连接错误,返回以下消息:

  

错误:SignalR:必须先启动连接才能发送数据。   在.send()之前调用.start()

我怀疑我在某处有缓存问题,因为即使在指定新的集线器名称后,如果我引用旧的集线器名称,它也能正常工作。

我已经尝试清理IIS和所有浏览器缓存,但无济于事。还有其他一些我在这里失踪的原因是为什么更改HubName属性对我不起作用?

1 个答案:

答案 0 :(得分:0)

尝试按以下方式制作hubName

[HubName("cloudHub")]
public WidgetHub : Hub
{
...
}

并创建像

这样的代理
this.proxy = connection.createHubProxy('cloudHub');

然后尝试通过调用方法Start();

来启动集线器
 $.connection.hub.start().done(function () {
               ....
               ....
            });