Ошибка при загрузке профиля ASP.Net

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


person Eric J.    schedule 27.07.2012    source источник


Ответы (1)


Оказывается, в отличие от List<T>, HashSet<T> требует полного имени сборки.

System.Collections.Generic.HashSet`1[[System.Int32]], System.Core, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089

person Eric J.    schedule 27.07.2012