1

每当在特定 sectionID 上遍历 googlesitemap.ashx 时,我的社区服务器安装经常发生错误。我怀疑用户名已被修改,但帖子尚未重新缓存以反映这一点。

有没有办法可以通过在数据库上执行 select 语句来检查数据完整性,或者有没有办法强制数据库重新缓存?

4

2 回答 2

1

与其说是答案,但您可以通过运行以下查询找到受影响的数据条目...

Select * 
FROM cs_Posts
Where UserID Not In (Select UserID 
                     From cs_Users Where UserAccountStatus = 2)
于 2008-10-21T14:14:36.380 回答
1

如果社区服务器发现不在 MemberRoleProfileProvider 实例中的用户,则可能会引发此错误。

以CommunityServer.Users AddMembershipDataToUser()为例

更新:


我通过注意到用户名存储在两个表中 - cs_Users 和 aspnet_Users 解决了这个问题。结果不知何故,每个表中的用户名都不同。手动更新,使名称相同解决了这个问题。

此外,用户将在存储过程cs_Membership_GetUsersByName的以下行中失去成员资格:

INSERT INTO @tbUsers
  SELECT UserId
  FROM   dbo.aspnet_Users ar, @tbNames t
  WHERE  LOWER(t.Name) = ar.LoweredUserName AND ar.ApplicationId = @ApplicationId

@tbNames 是一个名称表,在某些时候来自 cs_Users(?),因此用户名不匹配,并且用户稍后没有插入到结果中。


另见:http ://dev.communityserver.com/forums/t/490899.aspx?PageIndex=2

于 2008-12-05T01:50:29.907 回答