大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 在Web Service中session和cookie用法

在Web Service中session和cookie用法

更新時間:2020-09-23 17:36:18 來源:動力節點 瀏覽1835次

session和cookie是常用的會話技術,在網站開發中得到了廣泛地運用。Web Service作為一款能夠開發交互式應用的前端程序,也會用到session和cookie。本文我們一起來學習在Web Service中使用session和cookie用法。

一、要在webservice中使用session,需要以下幾點要求:

1.在服務端的方法中加入[WebMethod(EnableSession=true)]修飾方法;

2.在客戶端,要在實例化了webservice代理類之后,要為它的CookieContainer 實例化一個 new CookieContainer();

這樣才能使用session存儲狀態。

3.另外在多個webservice代理中,只要含有相同的cookie,就能共用相同的session,其中的cookie通過代理類的CookieContainer.GetCookies(new Uri(s.Url))["ASP.NET_SessionId"]取得,如果其他的webserivce代理類需要用相同的session則可以用CookieContainer.Add方法,將取得的cookie加入即可。

二、如果只想使用cookie,則只需要在客戶端做設置就可以,服務器端不需要像session一樣加入屬性修飾。

另外webmethod只用于public的成員方法,不用于static的,雖然不報錯,但在客戶端代理類中是找不到static方法的。

在使用asp.net編寫webservice時,默認情況下是不支持session的,但我們可以把WebMethod的EnableSession選項設為true來顯式的打開它,請看以下例子:

1 新建網站WebSite

2 新建web服務WebService.asmx,它具有以下兩個方法:

[WebMethod(EnableSession = true)]

public string Login(string name)

{

Context.Session["name"] = name;

return name;

}

[WebMethod(EnableSession = true)]

public string GetName()

{

if (Context.Session["name"] != null)

return Context.Session["name"].ToString();

else

return "";

}

3 添加asp.net頁面SessionInWebservice.aspx

<asp:button id="btnLogin" p="" <="" runat="server">

Text="Login" OnClick="btnLogin_Click" />


<asp:button id="btnGetName" p="" <="" runat="server">

Text="GetName" OnClick="btnGetName_Click" />

SessionInWebservice.aspx.cs

protected void btnLogin_Click(object sender, EventArgs e)

{

WebService ws = new WebService();

ws.Login(txtName.Text);

}

protected void btnGetName_Click(object sender, EventArgs e)

{

WebService ws = new WebService();

lblName.Text = ws.GetName();

}

問題似乎到此結束了,按Login按鈕記錄用戶名以后,再按GetName就可以獲取到剛才輸入的名字。

但如果我們另外新建一個website,并添加web引用來調用剛才編寫的Web Service,問題就出來了,GeName方法并沒有獲取到我們剛才登錄的用戶名(如果是在winform中調用該方法,也會出現同樣的問題)。莫非這個方法行不通了?

其實不然,我們給該WebService的CookieContainer賦值就可以了,修改SessionInWebservice.aspx.cs 的代碼:

private static System.Net.CookieContainer cookieContainer

= new System.Net.CookieContainer();

protected void btnLogin_Click(object sender, EventArgs e)

{

localhost.WebService ws = new localhost.WebService();

ws.CookieContainer = cookieContainer;

ws.Login(txtName.Text);

}

protected void btnGetName_Click(object sender, EventArgs e)

{

localhost.WebService ws = new localhost.WebService();

ws.CookieContainer = cookieContainer;

lblName.Text = ws.GetName();

}

請注意:Login方法和GetName方法必須指定同一個CookieContainer,因此在這里我們使用了靜態變量。

但如果是在不同的頁面中調用該Web Service,問題依舊存在,因此我們需要重新修改代碼,通過編寫新類繼承上面的Web Service,并給CookieContainer賦值就可以解決該問題了:

public class WebService1:localhost.WebService

{

private static System.Net.CookieContainer cookieContainer;

static WebService1()

{

cookieContainer = new System.Net.CookieContainer();

}

public WebService1()

{

this.CookieContainer = cookieContainer;

}

}

調用的時候也不需要重新給CookieContainer賦值了:

protected void btnLogin_Click(object sender, EventArgs e)

{

WebService1 ws = new WebService1();

ws.Login(txtName.Text);

}

protected void btnGetName_Click(object sender, EventArgs e)

{

WebService1 ws = new WebService1();

lblName.Text = ws.GetName();

}

相必通過以上的介紹,你一定對Web Service中session和cookie用法有所掌握和了解,當然在實際使用時發現在如果調用Web Service的兩個頁面是在同一個網站里可以,如果分別是2個不同網站的頁面就還是不能使用同一個session。想學習更多的前端頁面知識,可以觀看本站java教程,學習更多的優質內容。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 五月综合激情视频在线观看 | 97影院3| 免费看一毛一级毛片视频 | 九色网址| 雅虎日本免费一区二区三区 | 亚洲乱码中文字幕 | 欧美成人一区二区三区不卡 | 九九热这里都是精品 | 亚洲国产婷婷香蕉久久久久久 | 国产区在线视频 | 涩涩色视频在线播放 | 亚洲欧美综合国产精品一区 | 欧美日韩亚洲国产 | 中文字幕一二三区乱码老 | 中文字幕一区二区三区 精品 | 国产乱码精品一区二区三区四川 | 曰本一级毛片免费 | 日韩免费一级毛片 | 免费播放国产一级 | 国产福利午夜自产拍视频在线 | 成人影院一区二区三区 | 国产欧美另类久久久品 | 高清在线不卡 | 亚洲男人的天堂久久香蕉 | 爱爱一区 | 老司机深夜影院入口aaaa | 激情狠狠干 | 荡女人人爱np粗口 | 国产精品嫩草研究所永久网址 | 性新婚a大黄毛片 | www.国产.com | 国产精品自在线拍国产 | 精品国产九九 | 日本囗交做爰视频欧美 | 亚洲国产视频在线观看 | 二区中文字幕 | 久久亚洲这里只有精品18 | 日本人xx视频免费视频 | 亚洲伦理久久 | 欧美日本在线视频 | 亚洲国产婷婷香蕉久久久久久 |