حدث خطأ أثناء تحميل ملف تعريف 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>
, HashSet<T>
يتطلب اسم تجميع مؤهل بالكامل.
System.Collections.Generic.HashSet`1[[System.Int32]]، System.Core، الإصدار=4.0.0.0، Culture=محايد، PublicKeyToken=b77a5c561934e089