如何在SignalR状态变量中存储值

时间:2014-06-19 22:18:42

标签: c# signalr

我正在使用OnConnected和OnDisconected来保持用户陷阱并减少内存。

我的问题是我无法在SignalR中分配任何变量。我正在使用以下代码。

当我阅读Clients.Caller.userid时,它总是为空。但是,在我指定xxSameProcess变量不为空之后,我可以立即读取它。

有什么东西我不见了吗?

    public override System.Threading.Tasks.Task OnConnected()
    {
        var user = CreateUser();
        Clients.Caller.userid = user.UserId;
        object xxSameProcess = Clients.Caller.userid;

        return base.OnConnected();
    }
    public override System.Threading.Tasks.Task OnDisconnected()
    {
        object xx = Clients.Caller.userid;

        CreateDelete( Clients.Caller.userid );

        return base.OnConnected();
    }

1 个答案:

答案 0 :(得分:1)

就我而言,我在连接时从客户端存储我的变量

        <script src="~/signalr/hubs"></script>
        <script type="text/javascript">
            (function ($) {
                //some stuff
                $.connection.hub.qs = { 'uid': '@guid' };
                $.connection.hub.start();
            })(jQuery);
        </script>

我可以使用查询字符串

从服务器访问它
public override Task OnConnected()
    {
        var uid = Context.QueryString["uid"];
        //some stuff

    return base.OnConnected();
}

public override Task OnDisconnected()
{
    var uid = Context.QueryString["uid"];
    //some stuff

    return base.OnDisconnected();
}

public override Task OnReconnected()
{
    var uid = Context.QueryString["uid"];

    //some stuff

    return base.OnReconnected();
}