会话如何在服务器场环境中工作
作者:互联网
我想了解会话锁定机制如何工作,以及如何在服务器场环境中锁定变量及其相应的子对象以进行多次读取/独占写入.
情境
Web场将使用3台Windows 2003服务器,每台服务器均作为Web应用程序的自己的应用程序域. sesion对象保存在SQL Server 2005上.
在我的Web应用程序中使用的对象如下:
MySampleClass = class
{
public string Id;
public Dictionary<string, CustomClass1> Data;
public List<string> Commands;
public CustomClass2 MoreData;
}
其中customClass 1和2是属于应用程序的业务类.
现在在其中一个网页中,代码将如下所示:
Session["myObj"] = new MySampleClass();
在其他页面中:
MySampleClass = (MySampleClass)Session["myObj"];
//Is Session["myObj"] accessed in a multiple reader/exclusive writer mode? if so is it locking just the variable or the whole contents?
MySampleClass.Commands.Add("sample string");
MySampleClass.Commands.RemoveAt(0);
//More CRUD changes
//Are these changes available to other pages as soon as I finish the CRUD changes?
让我知道您是否需要更多详细信息
解决方法:
在锁定会话存储数据下查看here.基本上,除非您的页面说它希望只读会话访问,否则该会话被锁定在数据库上,并且该会话的其他调用者将以1/2秒的间隔轮询,直到被解锁.
标签:session-state,asp-net,c 来源: https://codeday.me/bug/20191210/2101895.html