フォーム認証を使用して 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 が必要ないことは明らかに懸念事項です..
しかし、新しいユーザーがログインし、上記のクラスからデータを取得したときに、静的オブジェクト (この場合はリスト) が新しくログインしたユーザーに固有のセッションになるかどうかはわかりません。「EnableSession = true」属性が原因ですか?
つまり、作成/発行された 100 個のセッションのそれぞれで 100 人のユーザーがログインした場合、WebMethod(EnableSession) 属性がオブジェクトにアタッチされているということは、ユーザー セッションごとにセッション固有の静的リスト オブジェクトが存在することを意味しますか? これは基本的に、この静的オブジェクトがセッション固有であり、したがってユーザー固有であると言っていますか?
説明をいただければ幸いです。前もって感謝します