所以我做到了:
public string getClientConnectionId()
{
return Context.ConnectionId;
}
我在服务器端有一个default.aspx页面,我在页面加载时执行了此操作
string i = new ChatHub().getClientConnectionId();
但是我得到的对象引用未设置为对象错误的实例,所以我需要获取客户端连接ID,以便可以将其存储在数据库中的数据库中。客户端具有两个ID,这些ID是自动生成的主键ID,而ChatId是应该是连接ID,以便如何解决我的问题?
最佳答案
如果您使用的是WebForms,并且有一个带代码的aspx页面,则无法执行新的MyPage()。Page_Load(),由于您不负责创建页面,因此它会以某种方式爆炸。对于MVC控制器和SignalR集线器以及持久连接来说都是相同的。
当您启动连接客户端时,它将通过完整的管道运行以获取连接ID。您可以在客户端使用此连接ID(在这种情况下,使用$ .connection.hub.id),如果您想以某种方式将其传递回页面,则需要对传入的页面进行请求来自客户端的连接ID。
您也可以在客户端连接时在集线器本身中进行映射,但这将需要对您的应用程序有更多的了解才能知道是否可能。