asp.net-mvc - IIS 与 IIS Express 会话处理和多用户
问题描述
我们有连接到 SQL Express 数据库的多用户 ASP.Net / MVC / Entity Framework 应用程序。我们使用会话变量来识别登录到应用程序的每个用户。
当用户登录域时,会为用户设置一个新的 Session("uid") 变量。这个 uid 也被写入了一个表中——我们可以清楚地看到每个用户在登录时都有自己唯一的 uid。
问题是当 2 个用户使用他们自己的 Session("uid") 调用相同的例程时,返回的响应对于两个用户来说是相同的结果,这是不正确的。
我说每个登录到https://xyz.site:60123的用户都有自己独特的会话,我错了吗?
为什么 IIS Express 可以为相应用户的 Session("uid") 值返回不同的结果而 IIS 不能正常工作?感觉就像用户在 IIS 上共享同一个会话,这是错误的。
我们通过在同一个 https://localhost:45454 上登录 2 个调试实例来评估每个会话的唯一性。我们发现有 2 个浏览器连接到这个 localhost,两者都是唯一的,返回 2 个不同的 id,这是正确的,但是在生产中,情况似乎不是这样?
任何帮助表示赞赏。
以下是 Controller 类的代码示例:
Function LoadMyRecord(ByVal x As Integer, Optional ByVal parentType As String = "MyUniqueKey") As Boolean
Dim db As New Database() ' this is a shared Entity Framework database
Dim us As New tblSession()
Dim uid As Integer = Session("uid")
If (db.tblSessions.Count(Function(m) m.UserID = uid And m.KeyName = parentType) > 0) Then
us = db.tblSessions.First(Function(m) m.UserID = uid And m.KeyName = parentType)
us.KeyValue = x
db.Entry(us).State = Entity.EntityState.Modified
End If
db.SaveChanges()
HttpContext.Session("UserKey:" + parentType) = x ' This is producing the same result as another user instance WHY?
Return True
End Function
解决方案
推荐阅读
- javascript - 从 Typescript 接口生成数据库模式
- php - PHP脚本显示除以零的错误,其中变量的值大于零
- bootstrap-4 - 粘性导航不会跟随页面上的下一个容器
- python - 如何根据单词的值排列单词列表?
- c# - 如何通过 C# Windows 应用程序连接和发送查询到 MariaDB 数据库?
- javascript - Axios.js - preventDefault() 在单击时不起作用,并且数据参数似乎关闭
- java - 如何将 XML 视图放入数组变量中?
- django-import-export - 如何更改导出文件的列名
- javascript - 在 Angular 中使用 ngFor 选择选项显示重复值,API 为不同员工返回具有相同部门 ID 的值
- python - ufunc 'add' 不包含签名匹配类型的循环(dtype('
dtype(' 好吧,我正在尝试使用 test.txt 文件中的行运行一些测试,并将它们导入到 numpy 数组中,以便对它们进行一些计算。但是,在我编写完代码后,它显示了标题中出现的错误消息。
这是我的代码:
import numpy