我有一个基本的 MVC 2 beta 应用程序,我试图在其中实现自定义 Identity 和 Principal 类。
我创建了实现 IIdentity 和 IPrincipal 接口的类,将它们实例化,然后在 Global.asax 的 Application_AuthenticateRequest 中将 CustomPrincipal 对象分配给我的 Context.User。
这一切都成功了,对象看起来不错。当我开始呈现视图时,页面现在失败了。第一个失败是在以下代码行的默认 LogoOnUserControl 视图中:
[ <%= Html.ActionLink("Log Off", "LogOff", "Account") %> ]
如果我把它拉出来,那么它会在不同的“Html.ActionLink”代码行上失败。
我收到的错误是:
WebDev.WebHost40.dll 中出现“System.Runtime.Serialization.SerializationException”类型的异常,但未在用户代码中处理
附加信息:未解析成员“Model.Entities.UserIdentity,Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”的类型。
为了在 MVC 中使用自定义身份,我需要在身份中实现一些其他属性吗?我试图在 Identity 类中实现 [Serializable()] 但它似乎没有影响。
更新: 我已经尝试了 3-4 种替代方法来实现这一点,但仍然失败并出现同样的错误。如果我直接使用 GenericIdentity/GenericPrincipal 类,它不会出错。
GenericIdentity ident = new GenericIdentity("jzxcvcx");
GenericPrincipal princ = new GenericPrincipal(ident, null);
Context.User = princ;
但这让我无处可去,因为我试图使用 CustomIdentity 来保存几个属性。如果我为我的 CustomIdentity/CustomPrincipal 实现 IIdentity/IPrincipal 接口或继承 GenericIdentity/GenericPrincipal ,则会出现上述原始错误。