Question

J'ai une application MVC 4 existante qui utilise AspNetSqlProfileProvider, configurée comme ceci :

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

Maintenant, je souhaite mettre à jour le système (sans supprimer les anciens profils) comme ceci :

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

Je n'ai eu aucun problème à ajouter des propriétés supplémentaires dans des projets précédents.Si les données sérialisées provenaient d'une version précédente où la propriété supplémentaire n'a pas été définie, le chargement de cette propriété a produit par défaut (T).Cependant, avec ce changement, lorsque mon contrôleur exécute cette ligne :

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

une exception est levée :

La tentative de chargement du type de cette propriété a entraîné l'erreur suivante :Impossible de charger le type « System.Collections.Generic.HashSet`1[System.Int32] ».

Notez que je fais référence à une propriété de type List<MyTypeA> mais l'exception indique qu'il ne peut pas charger le type

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

Ai-je commis une erreur dans la façon dont j'ai spécifié le type dans web.config ?Y a-t-il une autre cause ?

Tout cela se produit dans Visual Studio 2010 SP1 avec le runtime .NET 4 sélectionné.

Était-ce utile?

La solution

Il s'avère que, contrairement à List<T>, HashSet<T> nécessite un nom d’assembly complet.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top