特定のセクション ID で googlesitemap.ashx がトラバースされるたびに、コミュニティ サーバーのインストールから頻繁にエラーが発生します。ユーザー名が修正されたと思われますが、これを反映するために投稿が再キャッシュされていません。
データベースで select ステートメントを実行してデータの整合性をチェックする方法はありますか? あるいは、データベースを強制的に再キャッシュする方法はありますか?
特定のセクション ID で googlesitemap.ashx がトラバースされるたびに、コミュニティ サーバーのインストールから頻繁にエラーが発生します。ユーザー名が修正されたと思われますが、これを反映するために投稿が再キャッシュされていません。
データベースで select ステートメントを実行してデータの整合性をチェックする方法はありますか? あるいは、データベースを強制的に再キャッシュする方法はありますか?
このエラーは、MemberRoleProfileProvider のインスタンスにないユーザーが見つかった場合、コミュニティ サーバーによってスローされる可能性があります。
例としてCommunityServer.Users AddMembershipDataToUser()を参照してください
アップデート:
ユーザー名が cs_Users と aspnet_Users の 2 つのテーブルに格納されていることに気付き、この問題を解決しました。どういうわけか、各テーブルでユーザー名が異なっていたことがわかりました。名前が同じになるように手動で更新すると、この問題が修正されました。
また、ユーザーは、ストアド プロシージャ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
それほど多くの答えではありませんが、次のクエリを実行すると、影響を受けるデータ エントリを見つけることができます...
Select *
FROM cs_Posts
Where UserID Not In (Select UserID
From cs_Users Where UserAccountStatus = 2)