ASP.Net session 间事件

标签 asp.net session

我有一个网站,其中许多注册用户同时连接,他们可以互相发送消息。每个用户在服务器上都有自己的 Session 对象,在这个 Session 对象中我存储“消息”列表 - 这是用户的消息。

Session["Messages"] = new List<UserMesages>();
//.... more code here
Session["Messages"] = BL.GetMyMessages();  //get a list of messages
//.... more code here
BL.MessageReceived += RefreshUserMessages();

public static void RefreshUserMessages(){
    //this code doesn't execute for all the sessions, but only for my current user.
}

我需要一种方法来知道用户何时收到新消息 - 我不希望每个请求都询问我的数据库。

我试图在 BL 类中使用一个事件(当一条消息存储在数据库中时,会引发一个事件),但这些事件不会从一个 session 传递到另一个 session 。

在我的 BL 类(class)中,我有:
public delegate void MessageReceivedEventHandler(object sender, MessageEventArgs e);
public static event MessageReceivedEventHandler MessageReceived;

public static int SaveMessageForUser(Message msg) {
    //... save the message
    if(MessageReceived != null) {
        MessageReceived (userid, msg)  // <-- correct parameters go here
    }
}

任何的想法?如何实现,在ASP.Net中这样

最佳答案

我建议您尝试使用 SignalR 来解决这个问题。 SignalR 是以最少的努力构建实时聊天应用程序的完美组件。

它会让你做你想做的一切。

查看本教程:

http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

关于ASP.Net session 间事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34569905/

相关文章:

asp.net - 什么是代理网络服务?

java - Spring Boot中如何记住用户?

ASP.Net Form 的字段仅在客户的环境中为空

ios - Facebook iOS Graph API 事件

c# - ASP.NET MVC Identity Google 通过 GetExternalLoginInfo 提供的 AccessToken 访问用户配置文件

c# - C# 线程初学者

asp.net - 在 ASP.NET MVC( View )中包含 WebForms?

c# - 查询中的“条件是预期的”

php - 关于 PHP session 的几个问题

node.js - PassportJS - 自定义回调并将 Session 设置为 false