使用signalr在asp.net中存储数据

Jak*_*ski 3 c# asp.net signalr-hub

我正在尝试使用signalr将数据存储在asp.net应用程序中.在这里说明我的问题是一个例子.

我有一个集线器,通知控件用户已连接并发送他的ID.

public static event EventHandler<IdEventArgs> userConnected;

public void Connected()
{
    Debug.WriteLine("Hub Connected Method");
    var id = Context.ConnectionId;

    userConnected(this, new IdEventArgs(id));
}
Run Code Online (Sandbox Code Playgroud)

然后我有我的控制器将事件处理程序添加到集线器

    public ActionResult Index()
    {
        LoadingHub.userConnected += new EventHandler<IdEventArgs>(UserConnected);

        return View();
    }
Run Code Online (Sandbox Code Playgroud)

最后我的方法应该保存获取的数据

    private void UserConnected(object sender, IdEventArgs e)
    {
        Debug.WriteLine("User Connected with Id: " + e.Id);

        //To do:
        //save data
    }
Run Code Online (Sandbox Code Playgroud)

我尝试保存到Session,但Session对象在这里为null.我遇到了用户配置文件,这可能是一个很好的解决方案 - 当用户连接到内部存储数据时,是否可以创建新的配置文件,当他断开连接以销毁所述配置文件时?或者也许完全不同的方法在这里更容易理解?

Was*_*asp 5

正如评论中已经提到的那样,SessionSignalR不提供.我会说你有两个主要选择:

  • 使用状态功能,如解释在这里,这样你的数据会来回连接,但你必须围绕它只要连接是否处于活动(适用于小型有效载荷,如果你不介意的客户端访问该信息)
  • 使用依赖注入(在这里检查)将服务传递到您的集线器,您可以按照自己的方式定义其接口(它可能是一对简单的get/ set方法对),并且其实现可能很多,来自内存中的静态(不一定)从字面上看)用于开发方案的字典,直到您想要用来提供水平可伸缩性(如果需要)的任何类型的持久存储.这在开始时有点费力,但随后变得非常简单和灵活