Web サービスで ASP.NET のセッション オブジェクトを使用するには、行う必要があることが 2 つあります。
1. WebService クラスは System.Web.Services.WebService クラスを継承する必要があります
2. WebMethod の EnableSession 属性値を true に設定する必要があります
CalculatorWebService クラスを見ると、次のことがわかります。 System .Web.Services.WebService クラスを継承しています。ただし、EnableSession プロパティ値を true に設定する必要があります。
この記事では、以下に示すように GridView でセッション オブジェクトを使用して、最近の計算結果を表示してみます。
この目標を達成するには、まず 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; }
次に、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"]; } }これで、ソリューションを構築できます。そこに Web サービスがブラウザで表示されます Web サービスには、Add と GetCalculations の 2 つのメソッドがリストされます [追加] メソッドをクリックします。 2 つの数値 (たとえば 20 と 30) を入力して、[呼び出し] ボタンをクリックしましょう
別の計算をしてみましょう (たとえば 30 と 70)。次に、[Invoke] ボタンをクリックすると、結果が 100 として取得されます。
さて、戻って GetCalculation メソッドをテストしましょう。次に、「Invoke」メソッドをクリックすると、以前に実行したすべての計算が表示されます。これらは
stringarray の形式で返されます。
したがって、私たちの Web サービスは期待どおりに機能します。それでは、Web アプリケーションでこれらのメソッドを使用してみましょう。この目的のために、Webform1.aspx で、GridView
control をその中にドラッグしましょう<tr>
<td>
<asp:GridView ID="gvCalculations" runat="server">
</asp:GridView>
</td>
</tr>
ファイル内のコードを変更する前に、プロキシ クラスを更新する必要があります。これを行うには、CalculatorService に移動し、[サービス参照の更新] を選択します。
その後、btnAdd_Click イベント コード スニペットに次のコード行を追加します。
gvCalculations.DataSource = client.GetCalculations(); gvCalculations.DataBind(); gvCalculations.HeaderRow.Cells[0].Text = "Recent Calculations";
ソリューションをビルドしてブラウザーで表示します。この Web ウィンドウです。
20 と 30 などの 2 つの数値を加算し続けましょう。そして、すでに計算を実行しているにもかかわらず、「計算は実行されていません
」というメッセージが表示されることがわかります。これは基本的に、Web アプリケーションが Web サービスと同じ SessionId を送信していないことが原因です。これを行うには、web.config ファイルの allowCookie を true に設定します。
次に、Web ウィンドウを再度実行して、いくつかの数値を追加しましょう。これで、期待どおりに実行されていることがわかります。
そこで、考慮すべき点がいくつかあります。
Web サービスが変更された場合は、クライアント アプリケーションのプロキシ クラスを更新する必要があります。これは、Service Reference フォルダーの下のサービスを右クリックし、Update Service Reference 項目を選択します
allowCookies 属性を true に設定して、クライアント アプリケーションが ASMX Web サービスから返された Cookie を受け入れることができるようにします。 Web サービスによって開始される今後のすべてのリクエストは、クライアントと Web サービスの間で同じセッションが維持されるようになります。
以上がセッション状態の使用方法 (ASP.Net Web サービス)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。