Signalr onConnected
所以我这样做:Signalr onConnected
public string getClientConnectionId()
{
return Context.ConnectionId;
}
我在服务器端Default.aspx页面,我这样做是在页面加载
string i = new ChatHub().getClientConnectionId();
,但我得到的对象引用不设置到一个对象错误的实例,我需要得到我的客户端连接ID,所以我可以将它存储在我的数据库中的数据库中客户端有两个ID的主键ID是自动生成的和ChatId谁应该是连接ID所以我该如何修复我的问题 ?
如果你使用的是WebForms,并且你有一个带有代码的aspx页面,你不能做新的MyPage()。Page_Load(),它会以某种方式炸毁,因为你是不是负责用于创建页面。 MVC控制器和SignalR集线器和持续连接也是如此。
当您启动连接客户端时,它将通过完整管道运行以获取连接标识。这个连接ID可以在客户端使用(在这种情况下使用$ .connection.hub.id),如果你想以某种方式将它传回给你的页面,那么你需要向传入的页面发出请求来自客户端的连接ID。
当客户端连接时,您也可以在集线器本身进行映射,但这需要更多的应用程序知识来了解它是否可能。
此连接ID在客户端可用(在本例中使用$ .connection.hub.id)我只是这样做:var chat = $ .connection.chatHub; $ .connection.hub.start(); alert(chat.id);我得到了'undefined'消息 – Sora 2013-03-03 19:48:04
直到连接启动后才得到ID: var chat = $ .connection.chatHub; $ .connection.hub.start()。done(function(){alert($。connection.hub.id);}); – davidfowl 2013-03-03 19:52:44
该ID是在连接上,**不** **集线器实例因此($ .connection.hub.id) – davidfowl 2013-03-03 19:54:29
我认为这是一个好主意,发布堆栈跟踪 – 2013-03-03 19:36:58
它看起来像'Context'为空,是什么问题? – gdoron 2013-03-03 19:37:30
问题是为什么我的上下文为空 – Sora 2013-03-03 19:38:32