カスタムの Identity クラスと Principal クラスを実装しようとしている基本的な MVC 2 ベータ アプリがあります。
IIdentity インターフェイスと IPrincipal インターフェイスを実装するクラスを作成し、それらをインスタンス化し、Global.asax の Application_AuthenticateRequest で CustomPrincipal オブジェクトを Context.User に割り当てました。
これはすべて成功し、オブジェクトはきれいに見えます。ビューのレンダリングを開始すると、ページが失敗します。最初の失敗は、次のコード行のデフォルトの LogoOnUserControl ビューにあります。
[ <%= Html.ActionLink("Log Off", "LogOff", "Account") %> ]
これを引き出すと、別の「Html.ActionLink」コード行で失敗します。
私が受け取るエラーは次のとおりです。
タイプ 'System.Runtime.Serialization.SerializationException' の例外が WebDev.WebHost40.dll で発生しましたが、ユーザー コードで処理されませんでした
追加情報: メンバー 'Model.Entities.UserIdentity,Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' の型が解決されていません。
MVC でカスタム ID を使用するために、ID に実装する必要がある追加のプロパティはありますか? [Serializable()] を Identity クラスに実装しようとしましたが、影響がないようです。
更新: これを実装するための 3 ~ 4 の代替方法を試しましたが、それでも同じエラーで失敗します。GenericIdentity/GenericPrincipal クラスを直接使用しても、エラーは発生しません。
GenericIdentity ident = new GenericIdentity("jzxcvcx");
GenericPrincipal princ = new GenericPrincipal(ident, null);
Context.User = princ;
しかし、CustomIdentity を使用していくつかのプロパティを保持しようとしているので、これでは何の解決にもなりません。IIdentity/IPrincipal インターフェイスを実装するか、CustomIdentity/CustomPrincipal の GenericIdentity/GenericPrincipal を継承すると、上記の元のエラーで失敗します。