首頁 >後端開發 >C#.Net教程 >ASP.Net Web 如何使用會話狀態詳解

ASP.Net Web 如何使用會話狀態詳解

Y2J
Y2J原創
2017-04-17 15:24:311751瀏覽

  在上次部落格文章中,我們討論了客戶端對web服務的使用。在這篇文章中我們將複習如何使用web服務的會話狀態

  這是上一篇文章的延續。因此請迅速的回顧先前的文章以便有一個清晰的概念。

  你可以在這裡閱讀上篇文章。

  在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.

ASP.Net Web 如何使用會話狀態詳解

  點選Add方法。讓我們輸入兩個數字,像是20和30,然後點選Invoke按鈕,我們會得到50這個結果.

ASP.Net Web 如何使用會話狀態詳解

ASP.Net Web 如何使用會話狀態詳解

##  讓我們來做另一次計算,例如30和70。然後點選Invoke按鈕,我們將會得到結果為100.

ASP.Net Web 如何使用會話狀態詳解

ASP.Net Web 如何使用會話狀態詳解

#  現在讓我們回頭測試一下我們的GetCalculation方法。然後點選Invoke方法,現在回展示出我們之前所做的所有計算。它們會以一個

字串陣列的形式回傳.

ASP.Net Web 如何使用會話狀態詳解0

#  如此我們的Web服務就這樣按照預期運作了。現在讓我們來試試在我們的網路應用程式中使用這些方法。為此,在 Webform1.aspx 中, 讓我們往其中拽一個GridView

控制項進去.

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

ASP.Net Web 如何使用會話狀態詳解1

  在文件修改之後的程式碼之前,我們需要更新一下代理類別。為此,請在CalculatorService並選擇Up

date Service Reference.

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. 而我们会看到虽然我们已经执行了一次计算, 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn