【问题标题】:How check if User still Online ASP MVC如何检查用户是否仍然在线 ASP MVC
【发布时间】:2014-12-28 17:08:44
【问题描述】:

我写在线聊天 你自己写 所以我写了登录,并设置了 AuthCookie,然后我做了身份验证

现在我需要检查所有 N 次哪些用户在线。

我在数据库中有一个名为 Users_Online (Id, User_Id) 的表 当我登录时(或当我来到聊天页面时(如果我有 Auth cookie) - 我在表 Users_online 中设置行。

但是当我外出时如何删除行(不唱歌,只需关闭标签/浏览器)??? 我尝试在 Global.asax 中使用 Session_OnStart/Session_OnEnd - 但最后一个 (Session_OnEnd) - 无法正常工作。

所以请帮帮我。

【问题讨论】:

  • 您无法检测到用户是否只是关闭了浏览器的窗口。例如,您可以认为它们在一段时间不活动后断开连接。
  • 好的。你能给出一个代码、例子或链接吗?顺便说一句,谢谢您的快速回答
  • 不是真的,有太多方法可以做到。例如,Google for ASP.NET MVC 非活动会话关闭。
  • 好的。谢谢。如果有人可以在这里写示例 - 它会有所帮助。谢谢大家

标签: asp.net-mvc session cookies session-cookies


【解决方案1】:

好的。我解决了我的问题(我希望))) 如果有人需要一个例子:

在 Global.asax 文件中,您需要有 2 个方法:

public void Session_OnStart()
{
    //here you do something
}
public void Session_OnEnd()
{
   //your logic 
}

在 Web.Config 中你需要写:

 <sessionState mode="InProc" cookieless="false" timeout="##Here you write timeout for session"></sessionState>

祝你好运

【讨论】:

    【解决方案2】:

    如果您想正确使用 SignalR (signalr.net)

    当有人关闭浏览器时不会触发 Session_OnEnd :)

    【讨论】:

    • 是的——但是如果你为会话超时做了 2-3 分钟——你可以检查用户是否仍然在线。是的 - SignalR - 最好和正确的方法 - 但任务不是使用某些东西 - 只有 Webservices/WebAPI - 它只是学习的任务
    • 如果您为会话超时设置 2-3 分钟,用户将需要在 2-3 分钟空闲时间后登录。这个解决方案可以通过课程。
    • 我将 cookie 设置了 2 天 - 在用户做某事的 2-3 分钟空闲时间之后 - 我的 Auth 过滤器刚刚设置了新会话
    猜你喜欢
    • 2023-03-13
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2016-07-18
    • 2020-09-06
    • 1970-01-01
    相关资源
    最近更新 更多