相关疑难解决方法(0)

89
推荐指数
4
解决办法
3万
查看次数

在MVC中实现自定义标识和IPrincipal

我有一个基本的MVC 2 beta应用程序,我正在尝试实现自定义Identity和Principal类.

我创建了实现IIdentity和IPrincipal接口的类,实例化它们,然后将CustomPrincipal对象分配给Global.asax的Application_AuthenticateRequest中的Context.User.

这一切都成功,对象看起来很好.当我开始渲染视图时,页面现在失败了.第一个失败是在以下代码行的默认LogoOnUserControl视图中:

 [ <%= Html.ActionLink("Log Off", "LogOff", "Account") %> ]
Run Code Online (Sandbox Code Playgroud)

如果我把它拉出来,那么就会失败一个不同的"Html.ActionLink"代码行.

我收到的错误是:

WebDev.WebHost40.dll中出现"System.Runtime.Serialization.SerializationException"类型的异常,但未在用户代码中处理

附加信息:成员'Model.Entities.UserIdentity,Model,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'的类型未解析.

为了在MVC中使用自定义标识,我是否需要在Identity中实现一些其他属性?我试图在Identity类中实现[Serializable()]但它似乎没有影响.

更新: 我尝试了3-4种实现此方法的替代方法但仍然失败并出现相同的错误.如果我直接使用GenericIdentity/GenericPrincipal类,则不会出错.

GenericIdentity ident = new GenericIdentity("jzxcvcx");
GenericPrincipal princ = new GenericPrincipal(ident, null);
Context.User = princ;
Run Code Online (Sandbox Code Playgroud)

但是这让我无处可去,因为我试图使用CustomIdentity来保存一些属性.如果我实现了IIdentity/IPrincipal接口或继承了我的CustomIdentity/CustomPrincipal的GenericIdentity/GenericPrincipal,它将失败并显示上面的原始错误.

iprincipal iidentity asp.net-mvc-2

19
推荐指数
2
解决办法
1万
查看次数

标签 统计

.net ×1

asp.net-mvc-2 ×1

c# ×1

iidentity ×1

iprincipal ×1