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

How to set Application Variable in SignalR Hub class?

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

SignalR 中心 Class :-

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 然后显示消息

"YOU HAVE REACHED MAXIMUM CONCURRENT USER LOG IN LIMIT !"

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

任何帮助将不胜感激!

谢谢

创建您的 _userCount 变量 public 并将 SampleHub class 的引用添加到 Login.aspx.cs 或您想要访问的任何其他 cs 页面并访问您的 _userCount 变量。

public static int _userCount=0;

在Login.aspx.cs页面上这样使用:

int usercount = SampleHub._userCount;

希望对您有所帮助