知识大全 在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();

  

cha138/Article/program/net/201311/13423

相关参考

知识大全 在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)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Web Service中保持ASP.net的状态

WebService中保持ASP.net的状态  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  简

知识大全 asp.net 学习笔记

  用WSDL命令可以注册webservice    在APSNET中创建WEB服务    以ASMX扩展名保存文件  <%@WebServiceLanguage=c#class=TestWS%

知识大全 在ASP.NET开发中使用非.Net Web服务

在ASP.NET开发中使用非.NetWeb服务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lis

知识大全 在ASP.NET中动态生成图形

在ASP.NET中动态生成图形  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  NET有一个很灵巧

知识大全 在ASP.Net中应用Javascript

在ASP.Net中应用Javascript  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  概要本

知识大全 在ASP.NET中使用Memcached

在ASP.NET中使用Memcached  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  现在一些

知识大全 在ASP.NET中调用存储过程方法新解

在ASP.NET中调用存储过程方法新解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在使用NET的