Ошибка загрузки профиля ASP.NET
-
12-12-2019 - |
Вопрос
У меня есть существующее приложение MVC 4, которое использует ASPNETSQLPROFILEPROVIDER, настроен так:
<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");
.
Исключение брошено:
Попытка загрузки типа этого свойства привело к следующей ошибке: не удалось загрузить тип «System.Collections.generic.hashSet »1 [System.int32] '.
Обратите внимание, что я ссылаюсь на свойство типа
List<MyTypeA>
, но исключение говорит, что он не может загрузить типSystem.Collections.generic.hashSet`1 [System.int32].
Я сделал ошибку в том, как я уточнил тип в web.config? Есть ли другая причина?
Все это происходит в Visual Studio 2010 SP1 с выбором среды выполнения .NET 4.
Решение
Оказывается, что, отличается от генеракодицетагкода, List<T>
требует полностью квалифицированного имени сборки.
System.Collections.generic.hashSet`1 [[System.int32]], system.core, version= 4.0.0.0, культура= нейтральная, publicketeken= b77a5c561934e089