在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Web Service中session和cookie如何使用

164次阅读
没有评论

共计 2945 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章主要讲解了“Web Service 中 session 和 cookie 如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“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();
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();}

问题似乎到此结束了,按 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 中 session 和 cookie 如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-18发表,共计2945字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 国产免费久久精品44 | 大陆国语对白国产av片 | 国产区成人综合色在线 | 国产成人精品免费视频大全软件 | 国产乱人伦app精品久久 | 国产在播放一区 | 欧美成人免费一级人片 | 国产成 人 色综合 亚洲 | jizz 亚洲大全 | 性生一级| 高清国产美女一级毛片 | 日本中国内射bbxx | 污全彩肉肉无遮挡彩色 | 中文字幕日韩高清 | 丰满少妇作爱视频免费观看 | 日本黄色一级片视频 | 久久精品二区 | 免费区欧美一级毛片精品 | 欧美日韩一区二区在线观看 | 在线观看视频99 | 国产一级做a爰大片免费久久 | 高清一区二区三区视频 | 欧美色图自拍 | 日本中文一区 | 久久精品国产亚洲av无码麻豆 | 精品福利视频一区二区三区 | 久久精品国产99国产精品亚洲 | 亚洲av久久久噜噜噜熟女软件 | 天堂中文字幕在线 | 四虎4hu永久免费 | a毛片免费视频 | 少妇又色又紧又爽又刺激视频 | 特级aav毛片日本免费视频 | 在线观看www视频 | 亚洲国产成人久久77 | 西野翔有码中文字幕在线 | 极品美女扒开粉嫩小泬 | 亚洲人成高清毛片 | 亚洲国产成人一区二区三区 | 门国产乱子视频观看 | 久久亚洲国产成人精品性色 |