1

車のパーツを扱うウェブショップを運営しています。パーツの横にある価格は、別の場所で実行されている Web サービスから読み込まれます。この Web サービスには、GetArticleInformation という Web メソッドが 1 つだけ含まれています

この Web サービスには、別の場所で実行されている別のWeb サービス WebshopServiceClientへのリンクがあります。これには、車に関する情報が含まれ、価格が保持されます。

ユーザーが購入したい車両の一部を選択すると、最初の Web サービスが呼び出され、メソッドGetArticleInformationが実行されます。このメソッドでは、2 番目の 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
    ...
}

Web ショップでユーザーがパーツを選択すると、セッションが作成されますが、次回ユーザーがパーツを選択すると、セッションは再び null になります。

私は何を間違っていますか、または何が欠けていますか?

4

1 に答える 1

0

内部の「プロキシ」手順を介してさまざまなWebサービスと「話す」ことを検討します-たとえば、アプリの開始時に起動されます-サービスですべてのトラフィックなどを処理します。そうすれば、個々のクライアント セッションはログオンしたり、サービスとのセッションを維持したりする必要はありませんが、プロキシ経由で管理することができます。個々のクライアントは、プロキシから「チケット」を取得し、それをセッションの一部にして、それを管理するために使用できます。

于 2013-01-11T11:09:20.030 に答える