我在带有表单身份验证的 asp.net 应用程序中使用 JTable ( http://www.jtable.org/ )。
我的 Web 应用程序将为每个成功登录的用户创建一个会话。
现在,Jtable 使用一个静态列表的数据源。这个静态列表所在的类不是静态的。
public class UserSpecificClass
{
[WebMethod(EnableSession = true)]
public static object PaymentsList(int jtStartIndex, int jtPageSize, string jtSorting)
{
//Get data from database
using (DBDataContext context = new DBDataContext(_staticConnString))
{
// LINQ Query - Get userDetails including all relationships to user
var PaymentDetails = (from t1 in context.Charges
join t2 in context.Invoices on t1.InvoiceID equals t2.ID
where t2.MemberID == 5
select new
{
Related_Invoice = t1.InvoiceID,
Charge_Description = t1.ChargeType.Name,
Charge_Amount = t1.Amount,
Amount_Paid = t1.PaidAmount,
Credited = t1.CreditAmount,
Last_Payment = t2.PaidAmount == 0 ? "Not Paid" : t2.PaidDate.ToString()
}).ToList();
_mhubPayments = new List<MHubPaymentsHistory>();
foreach (var obj in PaymentDetails)
{
MHubPaymentsHistory data = new MHubPaymentsHistory(obj.Related_Invoice, obj.Charge_Description, obj.Charge_Amount,
obj.Amount_Paid, obj.Credited, obj.Last_Payment);
_mhubPayments.Add(data);
}
//Return result to jTable
return new { Result = "OK", Records = _mhubPayments, TotalRecordCount = recordCount };
}
}
现在,我知道静态变量和属性将被创建一次,并且在服务器上的应用程序域中可供所有用户使用......所以很明显,我不希望 Web 应用程序中有 1 个 InvoicesList ......
但是我不确定当新用户登录并从上面的类中检索数据时,静态对象(在这种情况下为 list )是否是特定于新登录用户的会话?由于“EnableSession = true”属性?
即:如果有 100 个用户登录,在创建/发布的这 100 个会话中的每一个中,将 WebMethod(EnableSession) 属性附加到对象是否意味着每个用户会话都有一个特定于会话的静态列表对象?这基本上是说这个静态对象将是特定于会话的,因此是特定于用户的?
任何澄清表示赞赏。提前致谢