У меня есть базовое бета-приложение MVC 2, в котором я пытаюсь реализовать пользовательские классы Identity и Principal.
Я создал свои классы, которые реализуют интерфейсы IIdentity и IPrincipal, создавал их, а затем назначал объект CustomPrincipal для моего Context.User в Application_AuthenticateRequest для Global.asax.
Это все успешно, и объекты выглядят хорошо. Когда я начинаю отображать Представления, страницы теперь терпят неудачу. Первый сбой находится в представлении LogoOnUserControl по умолчанию в следующей строке кода:
[ <%= Html.ActionLink("Log Off", "LogOff", "Account") %> ]
Если я вытащил это, он завершится неудачей на другой строке кода "Html.ActionLink".
Получаемая ошибка:
Исключение типа 'System.Runtime.Serialization.SerializationException' произошел в WebDev.WebHost40.dll, но не обрабатывался в коде пользователя
Дополнительная информация: Тип не разрешено для члена "Model.Entities.UserIdentity, модель, Версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = NULL".
Есть ли какие-то дополнительные свойства, которые мне нужно реализовать в моей Identity, чтобы использовать пользовательский идентификатор в MVC? Я попытался реализовать [Serializable()] в классе Identity, но, похоже, это не повлияло.
UPDATE: Я пробовал 3-4 альтернативных способа реализовать это, но все еще не удается с той же ошибкой. Если я использую классы GenericIdentity/GenericPrincipal напрямую, это не ошибка.
GenericIdentity ident = new GenericIdentity("jzxcvcx");
GenericPrincipal princ = new GenericPrincipal(ident, null);
Context.User = princ;
Но это никуда не денется, так как я пытаюсь использовать CustomIdentity для хранения нескольких свойств. Если я реализую интерфейсы IIdentity/IPrincipal или наследую GenericIdentity/GenericPrincipal для моего CustomIdentity/CustomPrincipal, он терпит неудачу с исходной ошибкой выше.