在测试中,我使用的数据库上的用户是一个大杰夫。在生产中,他只有 Execute。
当我打电话时,
Membership.DeleteUser(user)
在测试中,它起作用了。我在生产中尝试同样的方法,我得到了这个:
DELETE 语句与 REFERENCE 约束“FK__aspnet_Us__UserI__37703C52”冲突。冲突发生在数据库“Testing”、表“dbo.aspnet_UsersInRoles”、列“UserId”中。
在我的 seargles(在 Google 上搜索)中,我遇到了这个家伙说的这个链接 ,
错误:DELETE 语句与 REFERENCE 约束“FK__aspnet_Me__UserI__15502E78”冲突。冲突发生在数据库“YourDBName”、表“dbo.aspnet_Membership”、列“UserId”中。
我花了一段时间在多个站点和选项中找到解决方案,因为错误和可能的解决方案相当具有误导性。事实证明,至少在我的情况下,这是成员数据库权限的问题。我用来连接的用户有权查看数据库本身的成员详细信息,但作为 aspnet_Users_DeleteUser 存储过程的一部分,它从 sysobjects 表中选择。会员连接用户显然没有足够的权限来执行该选择,因此整体删除失败。
我的解决方法是将用户添加到成员数据库的 aspnet_Membership_FullAccess 角色。
但是当我这样做时,它不起作用。有人对如何处理这个有任何想法吗?