我假设您使用的是 SqlMembershipProvider。如果是这样,这就是我要采取的方向......
创建一个继承 SqlMembershipProvider 的类并覆盖 GetNumberOfUsersOnline() 和 ValidateUser() 方法...
using System.Web.Security;
public class MyMembershipProvider : SqlMembershipProvider
{
public override bool ValidateUser(string username, string password)
{
if (base.ValidateUser(username, password))
{
// successfully logged in. add logic to increment online user count.
return true;
}
return false;
}
public override int GetNumberOfUsersOnline()
{
// add logic to get online user count and return it.
}
}
现在,如果您使用 LoginStatus 控件来允许用户退出,您可以使用该LoggedOut
事件在此处添加递减在线用户计数逻辑。
您必须在 web.config 中使用新的自定义成员资格提供程序。对于您的成员资格的 type 属性,将其从它所说的任何内容更改type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
为类似type="MyNameSpace.MyMembershipProvider"
. 我想这就是它的全部。
此解决方案允许您继续使用您的 SqlMembershipProvider 提供程序,只需添加几个。