web服务的会话状态怎么在ASP.NET项目中使用
创始人
2024-11-28 17:42:01
0次

在web服务中要用到ASP.NET中的会话对象,有2件事情需要做。

  1.WebService 类需要继承System.Web.Services.WebService类

  2.WebMethod中的EnableSession属性值应该设置为true

web服务的会话状态怎么在ASP.NET项目中使用

  来看我们CalculatorWebService类,我们可以看到,它已经继承System.Web.Services.WebService类。但是,我们需要EnableSession属性值设置为true。

  本文中,我们将试试在使用一个如下所示的GridView中的会话对象来展示最近的计算结果.

web服务的会话状态怎么在ASP.NET项目中使用

  为了达成这个目的,首先要想下面这样,修改CalculatorWebService类的Add方法.

[WebMethod(EnableSession = true)]
  public int Add(int firstNumber, int secondNumber)
  {
   List calculations;
 
   if (Session["CALCULATIONS"] == null)
   {
    calculations = new List();
   }
   else
   {
    calculations = (List)Session["CALCULATIONS"];
   }
    
   string strTransaction = firstNumber.ToString() + " + "
    + secondNumber.ToString() 
    + " = " + (firstNumber + secondNumber).ToString();
   calculations.Add(strTransaction);
   Session["CALCULATIONS"] = calculations;
 
   return firstNumber + secondNumber;
  }

  然后再引入另外一个公共方法来返回所有的计算结果. 要使用WebMethod特性来修饰这个方法,并且将EnableSession属性设置为true.

[WebMethod(EnableSession = true)]
  public List GetCalculations()
  {
   if (Session["CALCULATIONS"] == null)
   {
    List calculations = new List();
    calculations.Add("You have not performed any calculations");
    return calculations;
   }
   else
   {
    return (List)Session["CALCULATIONS"];
   }
  }

  现在就可以构建我们的解决方案了,并能在浏览器中查看到我们的Web服务.

web服务的会话状态怎么在ASP.NET项目中使用

  Web服务会列出两个方法——Add和GetCalculations.

web服务的会话状态怎么在ASP.NET项目中使用

  点击Add方法。让我们输入两个数字,比如20和30,然后点击Invoke按钮,我们会得到50这个结果.

web服务的会话状态怎么在ASP.NET项目中使用

web服务的会话状态怎么在ASP.NET项目中使用

  让我们来做另外一次计算,比如30和70。然后点击Invoke按钮,我们将会得到结果为100.

web服务的会话状态怎么在ASP.NET项目中使用

web服务的会话状态怎么在ASP.NET项目中使用

  现在让我们回头来测试一下我们的GetCalculation方法。然后点击Invoke方法,现在回展示出我们之前所做的所有计算。它们会以一个字符串数组的形式返回.

web服务的会话状态怎么在ASP.NET项目中使用

  如此我们的Web服务就这样按照预期运作了。现在让我们来试试在我们的Web应用程序中使用这些方法。为此,在 Webform1.aspx 中, 让我们往其中拽一个GridView控件进去.


 
  
  
 

  在文件修改之后的代码之前,我们需要更新一下代理类。为此,在CalculatorService并选择Update Service Reference.

web服务的会话状态怎么在ASP.NET项目中使用

  此后,在btnAdd_Click事件代码段之中, 加入如下几行代码.

gvCalculations.DataSource = client.GetCalculations();
   gvCalculations.DataBind();
 
   gvCalculations.HeaderRow.Cells[0].Text = "Recent Calculations";

  构建我们的解决方案,并在浏览器中查看这个web窗口.

web服务的会话状态怎么在ASP.NET项目中使用

  让我们继续加入两个数字,比如20和30. 而我们会看到虽然我们已经执行了一次计算, You have not performed any calculations 这样的消息还是将会显示出来.

web服务的会话状态怎么在ASP.NET项目中使用

  这基本上是因为web应用程序并没有像Web服务发送相同的SessionId。为此,将web.config文件中的allowCookie设置成true.

web服务的会话状态怎么在ASP.NET项目中使用

  现在我们再来运行这个web窗口并添加一些数字。现在我们就可以看到它按照预期运行了.

web服务的会话状态怎么在ASP.NET项目中使用

  因此,这下面有几点要深入思考:

如果Web服务被修改了,客户端应用程序的代理类就要被更新. 为此,在Service Reference夹下面的服务上点击右键,并选择Update Service Reference项.

将allowCookies属性设置成true,以便让客户端应用程序接受从ASMX Web服务返回的cookie,并将其复制到未来所有项Web 服务发起的请求中去. 这就确保了客户端和Web服务之间是维护的同一个Session。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...