Error al cargar el perfil de asp.net
-
12-12-2019 - |
Pregunta
Tengo una aplicación MVC 4 existente que utiliza el ASPNETSQLPROFILEPROVIDER, configurado así:
<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>
Ahora deseo actualizar el sistema (sin quitar los perfiles antiguos) como este:
<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>
No he tenido problemas para agregar propiedades adicionales en proyectos anteriores. Si los datos serializados fueron de una versión anterior donde no se definió la propiedad adicional, cargando esa propiedad prendió el valor predeterminado (t). Sin embargo, con este cambio, cuando mi controlador ejecuta esta línea:
List<MyTypeA> myTypeAs =
(List<MyTypeA>)HttpContext.Current.Profile.GetPropertyValue("MyTypeA");
Se lanza una excepción:
Intento de cargar el tipo de esta propiedad resultó en el siguiente error: No se pudo cargar el tipo 'System.Collections.Genic.Hasset`1 [System.int32]'.
Observe que estoy haciendo referencia a una propiedad de tipo
List<MyTypeA>
, pero la excepción dice que no puede cargar el tipoSystem.collections.genic.hashset`1 [System.int32].
¿Cometí un error en la forma en que especifiqué el tipo en web.config? ¿Hay otra causa?
Todo esto está sucediendo en Visual Studio 2010 SP1 con el tiempo de ejecución .NET 4 seleccionado.
Solución
Resulta que, diferente del List<T>
, HashSet<T>
requiere un nombre de ensamblaje completamente calificado.
System.collections.genic.hashset`1 [[System.int32]], System.core, versión= 4.0.0.0, cultura= neutral, publickeytoken= B77A5C561934E089