У меня есть существующее приложение 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.