如何在Web服务中使用会话状态

在本文中,将探讨如何在ASP.NETWeb服务中使用会话状态。这是之前文章的延续,因此在继续阅读本文之前,请确保已经阅读了前文,以便对会话状态的使用有一个清晰的理解。可以通过以下链接阅读前文:。

要在使用ASP.NETWeb服务中使用会话对象,需要做两件事情:

  • WebService类需要继承自System.Web.Services.WebService类。
  • WebMethod属性的EnableSession属性需要设置为true。

通过查看CalculatorWebService类,可以看到它已经继承自System.Web.Services.WebService类。但需要将EnableSession属性设置为true。

在本文中,将尝试使用会话对象在GridView中显示最近的计算结果,如下所示:

首先,需要修改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服务应该列出两个方法——Add和GetCalculations。点击Add方法。让添加两个数字,比如20和30。点击Invoke按钮时,将得到结果50。

让再做一次计算,比如30和70。点击Invoke按钮时,将得到结果100。

现在让返回并测试GetCalculations方法。点击Invoke按钮时,将显示到目前为止所做的所有计算。它们将作为字符串数组返回。

因此,Web服务按预期工作。现在让尝试在客户端Web应用程序中使用这些方法。为此,在Webform1.aspx中,让拖放一个GridView控件。

<tr> <td> <asp:GridView ID="gvCalculations" runat="server"></asp:GridView> </td> </tr>

在代码后台文件修改之前,需要更新代理类。为此,右键单击CalculatorService并选择Update Service Reference。

之后,在btnAdd_Click事件中,添加以下代码行。

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

构建解决方案并在浏览器中查看Web表单。让继续添加两个数字,比如20和30。但是即使已经进行了一次计算,也会显示一条消息:"尚未执行任何计算"。

这主要是因为Web应用程序没有向Web服务发送相同的SessionId。要使其工作,请在web.config文件中将allowCookies设置为true。

让再次运行webform并添加一些数字。现在可以看到它按预期工作。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485