久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Web Service中session和cookie如何使用

224次閱讀
沒有評論

共計 2945 個字符,預(yù)計需要花費 8 分鐘才能閱讀完成。

這篇文章主要講解了“Web Service 中 session 和 cookie 如何使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Web Service 中 session 和 cookie 如何使用”吧!

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

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

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

這樣才能使用 session 存儲狀態(tài)。

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

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

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

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

1 新建網(wǎng)站 WebSite

2 新建 web 服務(wù) 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();
return  
}

3 添加 asp.net 頁面 SessionInWebservice.aspx

asp:button id= btnLogin  p=   =  runat= server 
Text= Login   quot;btnLogin_Click  / 
 asp:button id= btnGetName  p=   =  runat= server 
Text= GetName   quot;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();}

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

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

其實不然,我們給該 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,因此在這里我們使用了靜態(tài)變量。

但如果是在不同的頁面中調(diào)用該 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;
}

調(diào)用的時候也不需要重新給 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 如何使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對 Web Service 中 session 和 cookie 如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-18發(fā)表,共計2945字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 平度市| 郧西县| 翁牛特旗| 巴南区| 长春市| 来宾市| 钟祥市| 乡城县| 石柱| 乌鲁木齐县| 麟游县| 北流市| 比如县| 广东省| 灵寿县| 莱西市| 措美县| 英超| 璧山县| 秀山| 寻乌县| 象州县| 蒙自县| 新疆| 凤山县| 天气| 高雄市| 盘山县| 白山市| 奉新县| 郧西县| 光泽县| 江陵县| 平泉县| 白山市| 丹棱县| 青铜峡市| 藁城市| 博客| 南丰县| 永川市|