戻って、私はそれを把握can'tが、私は再シードするために必要な、そしてNULL値を持つシードの後、USERSTORE変数を返すことで、ログのシングルサインオンを持つ2つのMVCプロジェクトを持っています。MVC var userStore =新しいUserStore <ApplicationUser>(db);ヌル
これは私のコード(デシベルが正常に動作し、すべての私のテーブルともAspNetUsersテーブルを見つけることに注意してください)です。
private ApplicationDbContext db = new ApplicationDbContext();
とUSERSTOREがnull値を持つためのUserManager行が例外をスロー(Indexメソッドで):私はhaven't
var userStore = new UserStore<ApplicationUser>(db);
var userManager = new UserManager<ApplicationUser>(userStore);
var userId = User.Identity.GetUserId();
var user = userManager.FindById(userId);
は作動溶液と最新種間のコードの単一の行を変更し、私は最後の二つの種の間でSSO設定を追加しました。
EDIT:
は、コンピュータを再起動しようとしましたが、問題が解消されないが、私は別のユーザでログインしようとすると、それが正常に動作します。再び第1のユーザでログインしようとしたとき、私は別のエラーを取得:
The provided anti-forgery token was meant for a different claims-based user than the current user.
だから私は、「InPrivateウィンドウ」にしようと、私は最初のユーザーと元の問題を取得しますが、他のユーザーが偽造防止のエラーを取得します代わりに。
EDIT 2:
が再度プロジェクトを実行しようとしましたし、元のエラーが最初のユーザーのために発生したが、次は私が偽造防止エラーをスローでログインしてみてください。
それは別のユーザでログインしようとした後、最初のユーザーはまた、抗偽造エラーがスローされます。
EDIT 3:
この特定の動作は、IEに接続しているようです。クロムとFirefoxでは元のエラーが出ますが、ログインやユーザーの順序の組み合わせで偽造エラーを複製することはできませんが、最初のユーザーは元の例外をスローし続けます。
だから私はそれがすべてのブラウザの問題であるオリジナルのエラーだと思います。
EDIT 4:
私は問題を起こしたコードの正確な行を知っているので、私は無事に次のことを前提とすることができると思うが、何らかの形で関係している..私は次のようにブレークポイントを設定することができます
var userStore = new UserStore<ApplicationUser>(db);
var userManager = new UserManager<ApplicationUser>(userStore);
が、もはやこの行にブレークポイントを設定することができます。
var userId = User.Identity.GetUserId();