我假设您正在使用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="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
至type="MyNameSpace.MyMembershipProvider"
之类的内容。我认为这就是它的一切。
该解决方案允许您继续使用您的SqlMembershipProvider提供程序,只需添加几个。
Thanx的答复,但我使用的会员表。修改这些表是否是一个好主意? – 2012-07-12 06:43:16
请勿修改表格。 – Theo 2012-07-12 06:49:26
我不是说要修改。您可以在该表中添加一个额外的列。 – 2012-07-12 06:52:00