c# - 已连接信号器

标签 c# javascript asp.net signalr

所以我这样做了:

 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/

相关文章:

c# - Xamarin.Android 设备要求

javascript - 如何在 React formik 单选字段上使用 onChange 属性

javascript - 如何使用 javascript 对广告/横幅进行地理定位?

ASP.NET MVC 3 Razor 语法问题

c# - 在 C# 中从十六进制到字节的最轻量级转换?

c# - Travis-CI 构建失败 "The type or namespace name ' 扩展在命名空间中不存在”

c# - AZURE:workerrole 中的异步 Run()

javascript - Bootstrap 模式 : Cannot call method 'scrollTop' of undefined

c# - 在 C# ASP 中预填充多个级联下拉列表

html - 根据屏幕大小有条件地显示 RenderBody