Erreur lors du chargement du profil ASP.Net
-
12-12-2019 - |
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é.
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