我们在SQL Server中使用ASP.NET成员资格提供程序已有十年没有问题。最近,可能在更新.NET框架之后和/或服务器崩溃之后,我们开始遇到奇怪的行为。
在几个随机的场合,aspnet_Membership.IsApproved标志被设置为false给我们的数千名用户。
我们仔细检查了整个代码库,看看可能正在批量更改此标志的内容并未发现任何内容。我们在表中添加了一个触发器,并确认此事件发生了几次,每当我们注意到许多记录同时更改时(在相同的毫秒内)。我们发现,这些用户中的一些用户在不同的波次中重复,并且这些用户在之前的几天/几周内实际上在我们的网站上活跃。
我们的服务器崩溃导致系统(虚拟机)恢复到先前状态,我们的用户设置了cookie,以避免每次访问网站时都重新登录。
我们所拥有的唯一理论是弱的(由于某些原因导致用户因崩溃而停用用户)但似乎无法验证这些。
有什么想法吗?
谢谢!
更新: 我按照注释中的建议添加了日志记录,以确定将其锁定的SQL语句。该语句是存储过程aspnet_Membership_UpdateUser。直到今天早上还没有人被锁定大约一个月,这个存储过程同时锁定了450多名用户。