0

AspNetSqlProfileProviderを使用する既存のMVC4アプリケーションがあり、次のように構成されています。

<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>

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

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

例外がスローされます:

このプロパティのタイプを読み込もうとすると、次のエラーが発生しました:タイプ'System.Collections.Generic.HashSet`1[System.Int32]'を読み込めませんでした。

タイプのプロパティを参照していますList<MyTypeA>が、例外はタイプをロードできないと言っていることに注意してください

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

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

これはすべて、.NET4ランタイムが選択されたVisualStudio2010SP1で発生します。

4

1 に答える 1

0

とは異なり、完全修飾アセンブリ名が必要であることがList<T>わかりHashSet<T>ます。

System.Collections.Generic.HashSet`1 [[System.Int32]]、System.Core、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089

于 2012-07-27T05:29:02.057 に答える