ホームページ  >  記事  >  バックエンド開発  >  セッション状態の使用方法 (ASP.Net Web サービス)

セッション状態の使用方法 (ASP.Net Web サービス)

Y2J
Y2Jオリジナル
2017-04-18 17:55:261339ブラウズ

Web サービスで ASP.NET のセッション オブジェクトを使用するには、行う必要があることが 2 つあります。

1. WebService クラスは System.Web.Services.WebService クラスを継承する必要があります

2. WebMethod の EnableSession 属性値を true に設定する必要があります

セッション状態の使用方法 (ASP.Net Web サービス)

CalculatorWebService クラスを見ると、次のことがわかります。 System .Web.Services.WebService クラスを継承しています。ただし、EnableSession プロパティ値を true に設定する必要があります。

この記事では、以下に示すように GridView でセッション オブジェクトを使用して、最近の計算結果を表示してみます。

セッション状態の使用方法 (ASP.Net Web サービス)

この目標を達成するには、まず CalculatorWebService クラスの Add メソッドを変更する必要があります次のように .

[WebMethod(EnableSession = true)]
        public int Add(int firstNumber, int secondNumber)
        {
            List<string> calculations;

            if (Session["CALCULATIONS"] == null)
            {
                calculations = new List<string>();
            }
            else
            {
                calculations = (List<string>)Session["CALCULATIONS"];
            }
            
            string strTransaction = firstNumber.ToString() + " + " 
                + secondNumber.ToString() 
                + " = " + (firstNumber + secondNumber).ToString();
            calculations.Add(strTransaction);
            Session["CALCULATIONS"] = calculations;

            return firstNumber + secondNumber;
        }

セッション状態の使用方法 (ASP.Net Web サービス)

次に、WebMethod 属性を使用してすべての計算結果を返す別のパブリック メソッドを導入し、EnableSession プロパティを true に設定します。

[WebMethod(EnableSession = true)]
        public List<string> GetCalculations()
        {
            if (Session["CALCULATIONS"] == null)
            {
                List<string> calculations = new List<string>();
                calculations.Add("You have not performed any calculations");
                return calculations;
            }
            else
            {
                return (List<string>)Session["CALCULATIONS"];
            }
        }

セッション状態の使用方法 (ASP.Net Web サービス)

これで、ソリューションを構築できます。そこに Web サービスがブラウザで表示されます

セッション状態の使用方法 (ASP.Net Web サービス)

Web サービスには、Add と GetCalculations の 2 つのメソッドがリストされます

セッション状態の使用方法 (ASP.Net Web サービス)

[追加] メソッドをクリックします。 2 つの数値 (たとえば 20 と 30) を入力して、[呼び出し] ボタンをクリックしましょう

、結果 50 が得られます。

セッション状態の使用方法 (ASP.Net Web サービス)

セッション状態の使用方法 (ASP.Net Web サービス) 別の計算をしてみましょう (たとえば 30 と 70)。次に、[Invoke] ボタンをクリックすると、結果が 100 として取得されます。

セッション状態の使用方法 (ASP.Net Web サービス)

セッション状態の使用方法 (ASP.Net Web サービス) さて、戻って GetCalculation メソッドをテストしましょう。次に、「Invoke」メソッドをクリックすると、以前に実行したすべての計算が表示されます。これらは

string

array の形式で返されます。

セッション状態の使用方法 (ASP.Net Web サービス)0 したがって、私たちの Web サービスは期待どおりに機能します。それでは、Web アプリケーションでこれらのメソッドを使用してみましょう。この目的のために、Webform1.aspx で、GridView

control

をその中にドラッグしましょう

<tr>
    <td>
        <asp:GridView ID="gvCalculations" runat="server">
        </asp:GridView>
    </td>
</tr>

セッション状態の使用方法 (ASP.Net Web サービス)1 ファイル内のコードを変更する前に、プロキシ クラスを更新する必要があります。これを行うには、CalculatorService に移動し、[サービス参照の更新] を選択します。

セッション状態の使用方法 (ASP.Net Web サービス)2その後、btnAdd_Click イベント コード スニペットに次のコード行を追加します。

gvCalculations.DataSource = client.GetCalculations();
            gvCalculations.DataBind();

            gvCalculations.HeaderRow.Cells[0].Text = "Recent Calculations";

セッション状態の使用方法 (ASP.Net Web サービス)3 ソリューションをビルドしてブラウザーで表示します。この Web ウィンドウです。

セッション状態の使用方法 (ASP.Net Web サービス)4 20 と 30 などの 2 つの数値を加算し続けましょう。そして、すでに計算を実行しているにもかかわらず、「計算は実行されていません

」というメッセージが表示されることがわかります。

セッション状態の使用方法 (ASP.Net Web サービス)5

これは基本的に、Web アプリケーションが Web サービスと同じ SessionId を送信していないことが原因です。これを行うには、web.config ファイルの allowCookie を true に設定します。

セッション状態の使用方法 (ASP.Net Web サービス)6

次に、Web ウィンドウを再度実行して、いくつかの数値を追加しましょう。これで、期待どおりに実行されていることがわかります。

セッション状態の使用方法 (ASP.Net Web サービス)7

そこで、考慮すべき点がいくつかあります。

  • Web サービスが変更された場合は、クライアント アプリケーションのプロキシ クラスを更新する必要があります。これは、Service Reference フォルダーの下のサービスを右クリックし、Update Service Reference 項目を選択します

  • allowCookies 属性を true に設定して、クライアント アプリケーションが ASMX Web サービスから返された Cookie を受け入れることができるようにします。 Web サービスによって開始される今後のすべてのリクエストは、クライアントと Web サービスの間で同じセッションが維持されるようになります。

以上がセッション状態の使用方法 (ASP.Net Web サービス)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。