Context is null in SignalR hub(SignalR集线器中的上下文为空)
本文介绍了SignalR集线器中的上下文为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个Web窗体应用程序和测试,以查看SignalR如何满足我的一个需求。我的集线器代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
namespace SignalRTest.Hubs
{
public class NotificationHub : Hub
{
public static readonly System.Timers.Timer _Timer = new System.Timers.Timer();
public NotificationHub()
{
var myInfo = Context.QueryString["myInfo"];
_Timer.Interval = 2000;
_Timer.Elapsed += TimerElapsed;
_Timer.Start();
}
void TimerElapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Random rnd = new Random();
int i = rnd.Next(0, 2);
var hub = GlobalHost.ConnectionManager.GetHubContext("NotificationHub");
hub.Clients.All.Alert(i);
}
}
}
我的客户端呼叫:
<script type="text/javascript">
$(function () {
var logger = $.connection.notificationHub;
logger.client.Alert = function (msg) {
if (msg == 1) {
$("#HyperLink1").show();
$("#HyperLink2").hide();
}
else {
$("#HyperLink1").hide();
$("#HyperLink2").show();
}
};
$.connection.hub.qs = "myInfo=12345";
$.connection.hub.start();
});
</script>
但是,由于某些原因,当检查服务器代码(在集线器中)上的上下文时,它是空的,因此我无法检索查询字符串值。有什么想法吗?
推荐答案
我不相信在创建中心时上下文可用。相反,您可以覆盖Hub类上的OnConnection
:
public override Task OnConnected()
{
var myInfo = Context.QueryString["myInfo"];
return base.OnConnected();
}
Hub Object Lifetime上的单据:
您不必实例化Hub类或从您自己的类调用其方法 服务器上的代码;所有这些都由SignalR集线器为您完成 管道。SignalR每次都会创建Hub类的新实例 它需要处理集线器操作,例如当客户端连接时, 断开连接或对服务器进行方法调用。 因为Hub类的实例是暂时性的,所以您不能使用它们 维护从一个方法调用到下一个方法调用的状态。每一次 服务器从客户端接收方法调用,该方法调用是 Hub类处理消息。要通过多个选项来维护状态,请执行以下操作 连接和方法调用,请使用某些其他方法,如 数据库,或者Hub类上的静电变量,或者其他类 这不是从Hub派生的。如果将数据持久保存在内存中,请使用 方法(如Hub类上的静电变量),则数据将为 应用程序域回收时丢失。
这篇关于SignalR集线器中的上下文为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:SignalR集线器中的上下文为空
基础教程推荐
猜你喜欢
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- rabbitmq 的 REST API 2022-01-01
- 将 XML 转换为通用列表 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- c# Math.Sqrt 实现 2022-01-01