我们刚刚从旧的 ASP.NET 成员(从 MVC3)迁移到新的 ASP.NET 通用提供程序,因为我们的 SQL 目标是 Azure SQL。迁移期间的 SQL 脚本非常痛苦!无论如何,我们将会话状态设置为 SQL(即<sessionState mode="Custom"
在 web.confg 中)。
现在,如果站点意外关闭,(比如调试 => 停止)当我们恢复时,我们会收到错误:
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]
带有主键的表内的数据库中具有相同的条目。
问题:谁负责删除该数据库条目?我知道如果正确启动注销,它应该被代码清除。但是如果它已经存在,不应该有一些自动错误处理(在会员本身中)吗?如果是,为什么不触发?如果没有,我该如何添加它?