尝试重命名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属性对我不起作用?
答案 0 :(得分:0)
尝试按以下方式制作hubName
[HubName("cloudHub")]
public WidgetHub : Hub
{
...
}
并创建像
这样的代理this.proxy = connection.createHubProxy('cloudHub');
然后尝试通过调用方法Start();
来启动集线器 $.connection.hub.start().done(function () {
....
....
});