SQLターゲットがAzureSQLであるため、古いASP.NETメンバーシップ(MVC3から)から新しいASP.NETユニバーサルプロバイダーに移行しました。その移動中のSQLスクリプトは-苦痛でした!とにかく、セッション状態をSQLに設定します(つまり<sessionState mode="Custom"
、web.confgで)。
ここで、サイトが予期せずダウンした場合(たとえば、debugging => stop)、再開するとエラーが発生します。
Violation of PRIMARY KEY constraint 'PK__Sessions__C9F492908756A0EE'. Cannot insert duplicate key in object 'dbo.Sessions'. The duplicate key value is (<randomstring>).
The statement has been terminated.
[db].[SessionId]
予想どおり、セッションのテーブル内のデータベースに主キーと同じエントリがあることを確認しました。
質問:そのdbエントリを削除するのは誰の責任ですか?ログアウトが適切に開始されれば、コードによって消去されるはずです。しかし、すでに存在する場合に備えて、(メンバーシップ自体で)自動エラー処理を行うべきではありませんか?はいの場合、なぜトリガーされないのですか?いいえの場合、どうすれば追加できますか?