c# web服务维护来自另一个web服务的会话

本文关键字:web 服务 会话 另一个 维护 | 更新日期: 2023-09-27 17:51:15

我有一个网上商店运行,其中包含汽车的部分。部件旁边的价格是从运行在其他地方的web服务加载的。这个web服务只包含一个webmethod: GetArticleInformation

在这个web服务中,有一个链接到另一个web服务WebshopServiceClient,它包含有关汽车的信息并保存价格。

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

[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
    ...
}

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

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

c# web服务维护来自另一个web服务的会话

我会考虑通过内部"代理"过程(例如在app-start启动时启动)与各种web服务"对话",该过程将处理服务的所有流量等。这样,单个客户端会话不必登录或维护与服务的会话,但仍然可以通过代理进行管理。单个客户端将从代理获得一个"票证",该票证可以成为其会话的一部分,并可用于管理它。