Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 信令器:跨页面请求跟踪用户状态_C#_Asp.net_Webforms_Signalr - Fatal编程技术网

C# 信令器:跨页面请求跟踪用户状态

C# 信令器:跨页面请求跟踪用户状态,c#,asp.net,webforms,signalr,C#,Asp.net,Webforms,Signalr,我正在尝试在ASP.NET webforms站点中使用Signalr实现即时消息传递 到目前为止,我已经有了一个良好的开端,我可以从一个客户向另一个客户发送消息,而不会出现任何问题 我的问题来自于跨asp.net请求维护聊天窗口 当用户打开聊天窗口并导航到站点上的新页面时,这将被视为断开与signalr hub的新连接。(客户端获得新的连接ID) 这是一个问题,因为这意味着我无法确定这是用户首次连接(没有打开聊天窗口,只是登录到网站)还是他们有一个活动聊天窗口,只是更改了页面 如果他们只是改变了

我正在尝试在ASP.NET webforms站点中使用Signalr实现即时消息传递

到目前为止,我已经有了一个良好的开端,我可以从一个客户向另一个客户发送消息,而不会出现任何问题

我的问题来自于跨asp.net请求维护聊天窗口

当用户打开聊天窗口并导航到站点上的新页面时,这将被视为断开与signalr hub的新连接。(客户端获得新的连接ID)

这是一个问题,因为这意味着我无法确定这是用户首次连接(没有打开聊天窗口,只是登录到网站)还是他们有一个活动聊天窗口,只是更改了页面

如果他们只是改变了页面,我想保持聊天窗口打开,显示消息。我可以从数据库中重建对话,但无法知道是否应该显示此对话

我曾经考虑过使用某种超时机制(如果这个对话在最后X分钟内处于活动状态,那么在新页面上显示出来),但在我看来这有点笨拙

由于我无法在OnDisconnect中保存活动对话(因为这不能接受任何参数),我必须使用某种轮询机制来保存上次打开对话窗口的时间戳

我想知道有没有人遇到过类似的问题,如果有,他们是如何解决的


已收到任何帮助…

已找到解决方案。使用cookies跟踪页面请求之间的活动对话ID。增加了使用超时的好处,即使用户注销,然后在指定的时间范围内再次登录


多亏cdslnte触发了这一想法……

在页面之间导航时,您能否在查询字符串中传递对话id的变量(以及您需要的任何其他信息)?是否有方法从javascript向页面上的每个链接添加查询字符串?这是一个相当大的网站,我会小心使用jQuery来修改每个链接…更不用说当服务器端的response.redirect出现一些页面更改时…不过,想想看,我可以使用cookies来保存会话ID。我会试试这个,如果它有效的话,我会发布一个答案。