1

環境: 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

4

1 に答える 1

2

SQL Server を使用して Asp.NET セッション状態を保存する http://support.microsoft.com/kb/317604

于 2012-10-24T07:54:43.740 に答える