所以我这样做了:
public string getClientConnectionId()
{
return Context.ConnectionId;
}
我在服务器端有一个default.aspx页面,我在页面加载时执行此操作
string i = new ChatHub().getClientConnectionId();
但是我收到一个对象引用未设置为对象实例的错误,我需要获取我的客户端连接 ID,以便我可以将其存储在我的数据库中,客户端有两个 id,即自动生成的主键 id 和ChatId 应该是连接 ID 那么我该如何解决我的问题?
最佳答案
如果您使用的是 WebForms,并且您有一个带有代码的 aspx 页面,则无法执行 new MyPage().Page_Load(),它会以某种方式崩溃,因为您NOT 负责创建页面。对于 MVC Controller 、SignalR 集线器和持久连接来说也是如此。
当您启动连接客户端时,它会运行完整的管道以获取连接 ID。您可以在客户端使用此连接 ID(在本例中使用 $.connection.hub.id),如果您想以某种方式将其传回您的页面,那么您需要向传入的页面发出请求来自客户端的连接 ID。
您还可以在客户端连接时在集线器本身中进行映射,但这需要对您的应用程序有更多了解才能知道这是否可行。
关于c# - 已连接信号器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15189906/