中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

ASP.Net Web 服務(wù) – 如何使用會(huì)話狀態(tài)

2018-07-20    來(lái)源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

  在上次博客帖子中,我們討論了客戶端對(duì)web服務(wù)的使用。在這篇文章中我們將復(fù)習(xí)一下如何使用web服務(wù)的會(huì)話狀態(tài)。

  這是上一篇文章的延續(xù)。因此請(qǐng)迅速的回顧之前的文章以便有一個(gè)清晰的概念。

  你可以這里閱讀上篇文章。

  在web服務(wù)中要用到ASP.NET中的會(huì)話對(duì)象,有2件事情需要做。

  1.WebService 類需要繼承System.Web.Services.WebService類

  2.WebMethod中的EnableSession屬性值應(yīng)該設(shè)置為true

WebService1

  來(lái)看我們CalculatorWebService類,我們可以看到,它已經(jīng)繼承System.Web.Services.WebService類。但是,我們需要EnableSession屬性值設(shè)置為true。

  本文中,我們將試試在使用一個(gè)如下所示的GridView中的會(huì)話對(duì)象來(lái)展示最近的計(jì)算結(jié)果.

Purpose

  為了達(dá)成這個(gè)目的,首先要想下面這樣,修改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;
        }

WebService2

  然后再引入另外一個(gè)公共方法來(lái)返回所有的計(jì)算結(jié)果. 要使用WebMethod特性來(lái)修飾這個(gè)方法,并且將EnableSession屬性設(shè)置為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"];
            }
        }

WebService3

  現(xiàn)在就可以構(gòu)建我們的解決方案了,并能在瀏覽器中查看到我們的Web服務(wù).

WebService4

  Web服務(wù)會(huì)列出兩個(gè)方法——Add和GetCalculations.

WebService5

  點(diǎn)擊Add方法。讓我們輸入兩個(gè)數(shù)字,比如20和30,然后點(diǎn)擊Invoke按鈕,我們會(huì)得到50這個(gè)結(jié)果.

WebService6

WebService7

  讓我們來(lái)做另外一次計(jì)算,比如30和70。然后點(diǎn)擊Invoke按鈕,我們將會(huì)得到結(jié)果為100.

WebService8

WebService9

  現(xiàn)在讓我們回頭來(lái)測(cè)試一下我們的GetCalculation方法。然后點(diǎn)擊Invoke方法,現(xiàn)在回展示出我們之前所做的所有計(jì)算。它們會(huì)以一個(gè)字符串?dāng)?shù)組的形式返回.

WebService10

  如此我們的Web服務(wù)就這樣按照預(yù)期運(yùn)作了,F(xiàn)在讓我們來(lái)試試在我們的Web應(yīng)用程序中使用這些方法。為此,在 Webform1.aspx 中, 讓我們往其中拽一個(gè)GridView控件進(jìn)去.

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

WebService11

  在文件修改之后的代碼之前,我們需要更新一下代理類。為此,在CalculatorService并選擇Update Service Reference.

WebService12

  此后,在btnAdd_Click事件代碼段之中, 加入如下幾行代碼.

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

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

WebService13

  構(gòu)建我們的解決方案,并在瀏覽器中查看這個(gè)web窗口.

WebService14

  讓我們繼續(xù)加入兩個(gè)數(shù)字,比如20和30. 而我們會(huì)看到雖然我們已經(jīng)執(zhí)行了一次計(jì)算, You have not performed any calculations 這樣的消息還是將會(huì)顯示出來(lái).

WebService15

  這基本上是因?yàn)閣eb應(yīng)用程序并沒(méi)有像Web服務(wù)發(fā)送相同的SessionId。為此,將web.config文件中的allowCookie設(shè)置成true.

WebService16

  現(xiàn)在我們?cè)賮?lái)運(yùn)行這個(gè)web窗口并添加一些數(shù)字,F(xiàn)在我們就可以看到它按照預(yù)期運(yùn)行了.

WebService17

  因此,這下面有幾點(diǎn)要深入思考:

  • 如果Web服務(wù)被修改了,客戶端應(yīng)用程序的代理類就要被更新. 為此,在Service Reference夾下面的服務(wù)上點(diǎn)擊右鍵,并選擇Update Service Reference項(xiàng).

  • 將allowCookies屬性設(shè)置成true,以便讓客戶端應(yīng)用程序接受從ASMX Web服務(wù)返回的cookie,并將其復(fù)制到未來(lái)所有項(xiàng)Web 服務(wù)發(fā)起的請(qǐng)求中去. 這就確保了客戶端和Web服務(wù)之間是維護(hù)的同一個(gè)Session.

 接下來(lái)是什么?

  在后續(xù)文章中,我們將會(huì)討論WebMethod特性及其屬性 有關(guān)的東西。

  引用: Arun Ramachandran (http://BestTEchnologyBlog.Com)

  原文地址:http://www.codeproject.com/Articles/807843/ASP-Net-Web-Services-How-to-use-session-state-in-a

標(biāo)簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:將HTML轉(zhuǎn)成XHTML并清除一些無(wú)用的標(biāo)簽和屬性

下一篇:Visual Studio原生開(kāi)發(fā)的10個(gè)調(diào)試技巧(一)