知识大全 在asp.net webservice中如何使用session
Posted 知
篇首语:古人学问无遗力,少壮工夫老始成。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 在asp.net webservice中如何使用session相关的知识,希望对你有一定的参考价值。
在使用编写webservice时 默认情况下是不支持session的 但我们可以把WebMethod的EnableSession选项设为true来显式的打开它 请看以下例子
新建网站WebSite
新建web服务WebService asmx 它具有以下两个方法
C# Code:
[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 ;
添加页面SessionInWebservice aspx
ASP NET Code:
<form id= form runat= server >
<div>
<asp:TextBox ID= txtName runat= server ></asp:TextBox>
<asp:Button ID= btnLogin runat= server
Text= Login OnClick= btnLogin_Click />
</div>
<div>
<asp:Button ID= btnGetName runat= server
Text= GetName OnClick= btnGetName_Click />
<asp:Label ID= lblName runat= server Text= Label ></asp:Label>
</div>
</form>
SessionInWebservice aspx cs
C# Code:
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引用来调用刚才编写的webservice 问题就出来了 GeName方法并没有获取到我们刚才登录的用户名(如果是在winform中调用该方法 也会出现同样的问题) 莫非这个方法行不通了?
其实不然 我们给该WebService的CookieContainer赋值就可以了 修改SessionInWebservice aspx cs 的代码
C# Code:
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 因此在这里我们使用了静态变量
但如果是在不同的页面中调用该webservice 问题依旧存在 因此我们需要重新修改代码 通过编写新类继承上面的webservice 并给CookieContainer赋值就可以解决该问题了
C# Code:
public class WebService :localhost WebService
private static System Net CookieContainer cookieContainer;
static WebService ()
cookieContainer = new System Net CookieContainer();
public WebService ()
this CookieContainer = cookieContainer;
调用的时候也不需要重新给CookieContainer赋值了
C# Code:
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();
相关参考
知识大全 在JavaScript中调用ASP.NET WebService的简单方法
在JavaScript中调用ASP.NETWebService的简单方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们
知识大全 ASP.NET 2.0 AJAX中Webservice调用方法
ASP.NET2.0AJAX中Webservice调用方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
知识大全 在ASP.NET Atlas中调用Web Service
在ASP.NETAtlas中调用WebService 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
WebService中保持ASP.net的状态 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 简
用WSDL命令可以注册webservice 在APSNET中创建WEB服务 以ASMX扩展名保存文件 <%@WebServiceLanguage=c#class=TestWS%
在ASP.NET开发中使用非.NetWeb服务 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lis
在ASP.NET中动态生成图形 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! NET有一个很灵巧
在ASP.Net中应用Javascript 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 概要本
在ASP.NET中使用Memcached 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 现在一些
在ASP.NET中调用存储过程方法新解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在使用NET的