c# - 在 SignalR 中 Hub.Context 线程安全吗?

标签 c# iis-7.5 signalr

如果不同客户端同时发出多个请求,则 Hub.Context.ConnectionId 的值会在处理程序执行期间发生变化。

假设我有 2 个客户端与客户端 ID A 和 B 连接,并且我的集线器上有一个名为 foo() 的方法。我从 A 向服务器发送一个调用 foo() 的请求,然后在处理来自 A 的请求的同时,我从 B 发送一个调用 foo() 的请求。在 A 的请求处理开始时 Hub.Context.ConnectionId == A 但在方法调用结束时 Hub.Context.ConnectionId == B。

我应该复制 Hub.Context 吗?我应该在什么时候执行此操作?

最佳答案

它不需要是线程安全的,因为 Hub 实例不是静态的,所以您不需要复制任何东西。

它们是每次调用创建的。因此客户端的每次调用都会创建一个新的 Hub 实例和 HubContext。

关于c# - 在 SignalR 中 Hub.Context 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10180052/

相关文章:

c# - 如何在自定义用户控件(.Net 4、Winforms)上使用项目集合编辑器?

C#获取两个文件的差异并用于增量备份

asp.net - POST 403 禁止 ScriptResource.axd

c# - 自托管 ASP.NET Web API 和自托管 SignalR 一起 Windows 服务应用程序

c# - 是否可以从网络应用程序访问手机的联系人?

c# - 为什么委托(delegate)函数引用在作为参数传递时会被垃圾收集?

asp.net - 如何使用 IIS 授予 IIS APPPOOL\DefaultAppPool 对 Asp.net 中存储过程的访问权限?

asp.net - IIS7.5 上的 ASP4.5 出现异常 Collection is read-only 错误

jquery - SignalR 的 $.hubConnection() 不是函数

asp.net - Cyber​​panel 上托管的 Asp Net SignalR 出现错误