如何在SignalR Hub类中设置应用程序变量?

时间:2017-03-09 06:01:38

标签: c# asp.net signalr signalr-hub signalr-2

首先,我知道我们无法在SignalR中访问会话变量和应用程序变量。但我的要求是我希望通过SignalR OnConnect()OnDisconnect()方法增加或减少当前登录的用户数。 我已经使用下面的代码。

SignalR Hub类: -

public  class  SampleHub : Hub
{
     // Use this variable to track user count
     private  static  int _userCount = 0;

     // Public hub methods  
    :

     // Overridable hub methods  
     public  override Task OnConnected()
    {
       _userCount ++; // this I want to set in Application variable
    }
     public  override Task OnReconnected()
    {
        _userCount ++; // this I want to set in Application variable
    }
     public  override Task OnDisconnected(bool stopCalled)
    {
       _userCount --; // this I want to set in Application variable
    }
}

_userCount变量中设置值后,当另一个用户登录系统时。在登录按钮单击事件中,我想检查if _userCount >= 11,然后显示消息

“您已达到最大并行用户登录权限!”

但是我无法将Application变量用于SignalR - 所以我的问题是如何在_userCount或任何其他{{1}中访问Login.aspx.cs变量页面。 我可以从SignalR Hub调用任何服务器方法吗?

任何帮助将不胜感激!

谢谢

1 个答案:

答案 0 :(得分:1)

将您的_userCount变量公开,并将SampleHub类的引用添加到Login.aspx.cs或您想要的任何其他cs页面,并访问您的_userCount变量。

#ID       Date                Title
j234hg    19 October 1969     court scene with cardinal richelieu
d45j5jkd  28 December 1969    THE ROYAL PHILHARMONIC ORCHESTRA GOES TO THE BATHROOM
s4k5jk    8 December 1970     crossing the atlantic on a tricycle
zd7u4h    19 October 1969     Bicycle Repair Man
f983      22 December 1970    Royal Episode 13 (or: The Queen Will Be Watching)
j8s74     15 September 1970   THE SEMAPHORE VERSION OF WUTHERING HEIGHTS
n4j6l3j   7 December 1972     Mr. Pither

在Login.aspx.cs页面上使用它:

public static int _userCount=0;

希望这会对你有所帮助