質問

このように構成されたaspnetsqlprofileProviderを使用する既存のMVC 4アプリケーションを持っています。

<properties>
    <add name="MyTypeAs" 
         type="System.Collections.Generic.List`1[[My.Namespace.MyTypeA, My.Namespace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]" serializeAs="Binary" />
</properties>
.

今こんなように(古いプロファイルを削除せずに)システムを更新したいと思います。

<properties>
    <add name="MyTypeAs" 
         type="System.Collections.Generic.List`1[[My.Namespace.MyTypeA, My.Namespace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]" serializeAs="Binary" />
    <add name="MyHashOfInts" 
         type="System.Collections.Generic.HashSet`1[System.Int32]" serializeAs="Binary" />
</properties>
.

私は以前のプロジェクトで追加のプロパティを追加すると問題ありませんでした。シリアル化されたデータが、追加プロパティが定義されていない前のバージョンからのものであった場合は、そのプロパティをロードする デフォルト(t)を得た。ただし、この変更により、コントローラがこの行を実行すると、

List<MyTypeA> myTypeAs = 
     (List<MyTypeA>)HttpContext.Current.Profile.GetPropertyValue("MyTypeA");
.

例外がスローされています:

このプロパティの入力を試みると、次のエラーが発生しました。

List<MyTypeA>型のプロパティを参照していますが、それ以外はタイプをロードできないと言う

System.Collections.Generic.hashset`1 [System.Int32]。

web.configでタイプを指定した方法を間違えましたか?他の原因はありますか?

これはすべて、Visual Studio 2010 SP1で開催されています.NET 4ランタイムが選択されています。

役に立ちましたか?

解決

List<T>とは異なり、HashSet<T>には完全修飾アセンブリ名が必要です。

system.collections.generic.hashset`1 [[System.Int32]]、System.Core、Version= 4.0.0.0、Culture= Neutral、PublicKeyToken= B77A5C561934J089

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top