0

所以我这样做了:

 public string  getClientConnectionId()
{
    return Context.ConnectionId;
}

我在服务器端有一个 default.aspx 页面我在页面加载时这样做了

string i = new ChatHub().getClientConnectionId();

但是我得到一个对象引用未设置为对象的实例错误我需要获取我的客户端连接 ID,以便我可以将它存储在我的数据库中的数据库中客户端有两个 ID,即自动生成的主键 ID 和 ChatId 谁应该是连接 ID,所以我该如何解决我的问题?

4

1 回答 1

2

如果您正在使用 WebForms 并且您有一个带有代码的 aspx 页面,则不能执行 new MyPage().Page_Load(),因为您负责创建页面,所以它会以某种方式爆炸。对于 MVC 控制器和 SignalR 集线器和持久连接也是如此。

当您启动连接客户端时,它会通过完整的管道运行以获取连接 ID。您可以在客户端使用此连接 ID(在本例中使用 $.connection.hub.id),如果您想以某种方式将其传递回您的页面,那么您需要向传入的页面发出请求来自客户端的连接 ID。

当客户端连接时,您还可以在集线器本身中进行映射,但这需要更多关于您的应用程序的知识才能知道它是否可能。

于 2013-03-03T19:41:37.430 回答