ホームページ >バックエンド開発 >C#.Net チュートリアル >ASP.Net Web セッション状態の使い方の詳しい説明

ASP.Net Web セッション状態の使い方の詳しい説明

Y2J
Y2Jオリジナル
2017-04-17 15:24:311752ブラウズ

前回のブログ投稿では、クライアントによる Web サービスの使用法について説明しました。この記事では、Web サービスのセッション state の使用方法を確認します。

前回の記事の続きです。したがって、明確なアイデアを得るために、以前の記事をすぐに確認してください。

前回の記事はこちらからご覧いただけます。

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 で Up

date

Service Reference を選択します。

  此后,在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. 而我们会看到虽然我们已经执行了一次计算, You have not performed any calculations 这样的消息还是将会显示出来.

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服务之间是维护的同一个Session.

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

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