ASP.Net 프로필을 로드하는 중 오류가 발생했습니다.
-
12-12-2019 - |
문제
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