문제

AspNetSqlProfileProvider를 사용하는 기존 MVC 4 애플리케이션이 다음과 같이 구성되어 있습니다.

<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에서 유형을 지정하는 방법에 실수를 했습니까?또 다른 원인이 있나요?

이 모든 것은 .NET 4 런타임이 선택된 Visual Studio 2010 SP1에서 발생합니다.

도움이 되었습니까?

해결책

와는 다른 것으로 밝혀졌습니다 List<T>, HashSet<T> 정규화된 어셈블리 이름이 필요합니다.

System.Collections.Generic.HashSet`1[[System.Int32]], System.Core, 버전=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top