Sitecore XPのアップグレード後にSerializationExceptionがログに記録される場合がある


説明

Sitecore XP 8.0リリースから新しいバージョンにアップグレードした後、ログ ファイルに次のエラーが記録される場合があります。

 Exception: System.Runtime.Serialization.SerializationException
Message: Member 'LockContext.ListId' was not found.
Source: mscorlib
   at System.Runtime.Serialization.SerializationInfo.GetValue(String name, Type type)
   at Sitecore.ListManagement.ContentSearch.Pipelines.Locking.LockContext..ctor(SerializationInfo info, StreamingContext context)
   at Void .ctor(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)(Object[] )
   ...

本事象は、アップグレード プロセスを開始するより前にロックされていたコンタクト リストがあった場合に発生する可能性があります。

Sitecore XP 8.0リリースとそれ以降のSitecore XPバージョンでは、リストのロック情報が異なる方法でシリアル化されます。そのため、アップグレード以前にロックされたリストが逆シリアル化された際にエラーが発生します。

解決策

正しく逆シリアル化されるようにリストのロック情報を更新するには、次の手順を実行してください。

  1. ソリューションをバックアップします。
  2. 「Master」データベースに対して次のクエリを実行します。
    UPDATE [IDTable] SET CustomData = REPLACE(CustomData, '"ListId"', '"LockContext.ListId"')
    UPDATE [IDTable] SET CustomData = REPLACE(CustomData, '"LockId"', '"LockContext.LockId"')
    UPDATE [IDTable] SET CustomData = REPLACE(CustomData, '"LockKey"', '"LockContext.LockKey"')