每当在特定 sectionID 上遍历 googlesitemap.ashx 时,我的社区服务器安装经常发生错误。我怀疑用户名已被修改,但帖子尚未重新缓存以反映这一点。
有没有办法可以通过在数据库上执行 select 语句来检查数据完整性,或者有没有办法强制数据库重新缓存?
每当在特定 sectionID 上遍历 googlesitemap.ashx 时,我的社区服务器安装经常发生错误。我怀疑用户名已被修改,但帖子尚未重新缓存以反映这一点。
有没有办法可以通过在数据库上执行 select 语句来检查数据完整性,或者有没有办法强制数据库重新缓存?
与其说是答案,但您可以通过运行以下查询找到受影响的数据条目...
Select *
FROM cs_Posts
Where UserID Not In (Select UserID
From cs_Users Where UserAccountStatus = 2)
如果社区服务器发现不在 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