以前のバージョンのCommerce Serverからのマーシャリングされたデータを逆シリアル化する方法について


説明

以前のバージョンのCommerce ServerからのOrderデータがあり、そのOrderオブジェクトのWeakly Typed Propertiesを使用して任意のデータをSQLテーブルのMarshalledDataカラムにシリアル化している場合に、それらをCommerce Server 10で逆シリアル化しようとすると、以下のエラーが表示される可能性があります:

System.Runtime.Serialization.SerializationException: Unable to find assembly 'Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

このエラーは、Orderシステムがデータを、既に廃止されたMicrosoft.CommerceServer.*と命名されている(またはそのカスタムの派生)タイプ名に逆シリアル化しようとすることに起因しています。

このエラーは、以下の場合に発生します:

  1. Commerce Serverの以前のバージョンからのOrderデータがある場合
  2. OrderオブジェクトのWeakly Typedプロパティを使用して任意のデータをSQLテーブルのMarshalledDataカラムにシリアル化する場合

この問題は、Commerce Server 10.0およびそれ以降のバージョンで発生します。

解決策

Order Object Serialization Bindingsを使用してCommerce Serverの以前のバージョンからのマーシャリングされたデータを逆シリアル化するには、以下の手順を実施してください:

註:「OldType」に指定されている値が、アセンブリ内に存在する必要はありません。古いタイプはインスタンス化されず、内部でLookupとして使われることになります。

Commerce Serverの標準実装のタイプを使用する際に必要なSerializationBindingsの変更の例については、以下を参照してください。独自の派生型を持っている場合、これを拡張する必要があります。

SerializationBindingsの詳細情報につきましては、Commerce Server 10でインストールされたコアCommerce Serverドキュメントのヘルプ ファイル配下の「SerializationBindings Element」節を参照してください。

<SerializationBindings>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.LineItem  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.LineItem, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.Basket  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.Basket, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Orders.StatusCodes  ,    Microsoft.CommerceServer.Orders.CrossTierTypes      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Orders.StatusCodes, CommerceServer.Core.Orders.CrossTier,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.WeaklyTypedPropertyDictionary  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.WeaklyTypedPropertyDictionary, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.OrderAddressCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.OrderAddressCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.OrderFormCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.OrderFormCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.OrderForm  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.OrderForm, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.ShipmentCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.ShipmentCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.PromoCodeRecord  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,        PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.PromoCodeRecord, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.PromoCodeRecordCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,        PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.PromoCodeRecordCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.LineItemCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.LineItemCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.PromoCodeStringCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,        PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.PromoCodeStringCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.PaymentCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.PaymentCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.OrderAddress  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.OrderAddress, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.Shipment  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.Shipment, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Inventory.InventoryCondition  ,    Microsoft.CommerceServer.CrossTierTypes      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Inventory.InventoryCondition, CommerceServer.Core.CrossTier,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.CreditCardPayment  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.CreditCardPayment, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Orders.PaymentMethodTypes  ,    Microsoft.CommerceServer.Orders.CrossTierTypes      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Orders.PaymentMethodTypes, CommerceServer.Core.Orders.CrossTier,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.ShippingDiscountCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.ShippingDiscountCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.DiscountApplicationRecordCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.DiscountApplicationRecordCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.ShippingDiscountRecord  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.ShippingDiscountRecord, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Orders.DiscountType  ,    Microsoft.CommerceServer.Orders.CrossTierTypes      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Orders.DiscountType, CommerceServer.Core.Orders.CrossTier,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Orders.PromoCodeState, Microsoft.CommerceServer.Orders.CrossTierTypes, Version=6.0.1.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
                        NewType="CommerceServer.Core.Orders.PromoCodeState, CommerceServer.Core.Orders.CrossTier,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
</SerializationBindings>