前回のブログ投稿では、クライアントによる Web サービスの使用法について説明しました。この記事では、Web サービスのセッション state の使用方法を確認します。
前回の記事の続きです。したがって、明確なアイデアを得るために、以前の記事をすぐに確認してください。
前回の記事はこちらからご覧いただけます。
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 で Up
date此后,在btnAdd_Click事件代码段之中, 加入如下几行代码.
gvCalculations.DataSource = client.GetCalculations(); gvCalculations.DataBind(); gvCalculations.HeaderRow.Cells[0].Text = "Recent Calculations";
构建我们的解决方案,并在浏览器中查看这个web窗口.
让我们继续加入两个数字,比如20和30. 而我们会看到虽然我们已经执行了一次计算, You have not performed any calculations 这样的消息还是将会显示出来.
这基本上是因为web应用程序并没有像Web服务发送相同的SessionId。为此,将web.config文件中的allowCookie设置成true.
现在我们再来运行这个web窗口并添加一些数字。现在我们就可以看到它按照预期运行了.
因此,这下面有几点要深入思考:
如果Web服务被修改了,客户端应用程序的代理类就要被更新. 为此,在Service Reference夹下面的服务上点击右键,并选择Update Service Reference项.
将allowCookies属性设置成true,以便让客户端应用程序接受从ASMX Web服务返回的cookie,并将其复制到未来所有项Web 服务发起的请求中去. 这就确保了客户端和Web服务之间是维护的同一个Session.
以上がASP.Net Web セッション状態の使い方の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。