C#webservices维护来自另一个Web服务的会话

时间:2013-01-11 10:52:40

标签: c# asp.net session

我有一个包含汽车部件的网上商店。零件旁边的价格是从运行其他地方的网络服务加载的。此Web服务仅包含一个web方法: GetArticleInformation

在这个网络服务中,有一个链接到另一个在其他地方运行的网络服务 WebshopServiceClient ,其中包含有关汽车的信息并保存价格。

现在,当用户选择他想购买的车辆的一部分时,调用第一个web服务并执行 GetArticleInformation 方法。在这个方法中,我想创建一个会话,该会话保存第二个webservice(数据库)的登录。通过这种方式,我想防止每次调用都需要新的登录。

[WebMethod(EnableSession = true)]
public GetBackItems GetArticleInformation(User user, Items items) 
{
    //Create session if needed
    client = (WebshopServiceClient)Session["SphinxLogon"];
    if (client == null)
    {
        client = new WebshopServiceClient();
        bool done = client.Logon();

        if (done)
        {
             Session["SphinxLogon"] = client;
        }
    }

    //Get information and send it back
    ...
}

现在,当网店中的用户选择一个部分时,会话被创建,但下次用户选择一个部分时,会话再次为空。

我做错了什么或我错过了什么?

1 个答案:

答案 0 :(得分:0)

我会考虑通过内部“代理”程序“讨论”各种网络服务 - 例如在app-start上启动 - 这将处理服务的所有流量等。这样,各个客户端会话不必登录或维护与服务的会话,但仍可通过代理进行管理。个人客户将从代理处获得“票证”,然后可以将其作为会话的一部分,并可用于管理它。