環境: IIS 7.5、.Net 4.0
マルチサーバー環境で HttpContext.Current.Session からの読み取りに問題があります。
最初に私のコードで、オブジェクトを HttpContext.Current.Session に保存し、後でもう一度読み込もうとします。読み取り (何度も実行される) はランダムに失敗し、呼び出しがヒットしたサーバーと関係があると思われます。オブジェクトの格納と読み取りは ajax 呼び出しによって行われ、同僚からオブジェクトを Page_Load に格納するように言われました。私はかなり懐疑的でしたが、このアプローチを使用しても問題は解決されませんでした。
保管:
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public Stream GetHierarchy(string invId, string zoomLevel)
{
Hierarchy hierarchy = new Hierarchy();
try
{
hierarchy = businessLogic.GetHierarchy(invId);
HttpContext.Current.Session["hierarchy"] = hierarchy;
}
catch (Exception ex)
{
throw ex;
}
return new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(hierarchy)));
}
読む:
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public Stream GetCustomer(string invId, string includeDetails, string zoomLevel)
{
Hierarchy hierarchy = (Hierarchy)HttpContext.Current.Session["hierarchy"];
Customers customers = null;
Customer customer = null;
if (hierarchy != null) {
customers = hierarchy.Customers;
if (customers != null)
{
try
{
customer = (from e in customers.DiagramCustomers where e.InvId == invId select e).ToList()[0];
}
catch (Exception ex)
{
}
}
}
return new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(customer)));
}
単一サーバー環境ですべてが正常に機能しています...
私がここで直面している問題の種類について、誰かが光を当てることができますか? そして、できればそれを解決する方法:-)
./CJ