ASP.NET如何使用网络服务的会话状态?
在web服务中使用ASP.NET的会话对象需要做两件事。
1.1。网络服务类需要继承系统。网络服务类。
2.2中的EnableSession属性值。WebMethod应该设置为true。
查看我们的CalculatorWebService类,我们可以看到它继承了System。网络服务类。但是,我们需要将EnableSession属性值设置为true。
在本文中,我们将尝试在GridView中使用如下所示的会话对象来显示最新的计算结果。
为了实现这个目标,首先修改CalculatorWebService类的Add方法如下。
[WebMethod(enable session=true)]public int Add(int first number,int secondNumber) { Liststring计算;if(Session[' CALCULATIONS ']==null){ CALCULATIONS=new Liststring();} else { CALCULATIONS=(Liststring)Session[' CALCULATIONS '];}字符串strTransaction=firstNumber。ToString()“”secondNumber。ToString()'='(first number second number)。ToString();计算。add(strTransaction);会话[' CALCULATIONS ']=CALCULATIONS;返回第一个数字第二个数字;}然后引入另一个公共方法返回所有计算结果。这个方法应该用WebMethod属性修饰,EnableSession属性应该设置为true。
[WebMethod(enable Session=true)]public Liststring GetCalculations(){ if(Session[' CALCULATIONS ']==null){ Liststring CALCULATIONS=new Liststring();计算。添加('您没有执行任何计算');返回计算;} else { return(ListString)Session[' CALCULATIONS '];}}现在我们可以构建我们的解决方案,并在浏览器中查看我们的Web服务。
网络服务列出了两种方法,——Add和GetCalculations。
单击添加方法。让我们输入两个数字,比如20和30,然后单击Invoke按钮,我们将得到50的结果。
我们再做一个计算,比如30和70。然后点击Invoke按钮,我们会得到一个100的结果。
现在让我们返回来测试我们的GetCalculation方法。然后单击Invoke方法,现在我们将显示之前进行的所有计算。它们将作为字符串数组返回。
所以我们的网络服务工作正常。现在让我们尝试在我们的Web应用程序中使用这些方法。因此,在Webform1.aspx中,让我们将一个GridView控件拖到其中。
tr TD ASP : GridView ID=' gvCalculations ' runat=' server '/ASP : GridView/TD/tr
在修改代码之前,我们需要更新代理类。为此,请在计算服务中选择更新服务参考。
之后,在btnAdd_Click事件的代码段中添加以下几行代码。
gvCalculations。DataSource=客户端。GetCalculations();gvCalculations。DataBind();gvCalculations。标题箭头。单元格[0]。文本=“最近的计算”;构建我们的解决方案并在浏览器中查看此web窗口。
让我们继续添加两个数字,如20和30,我们将看到,尽管我们已经执行了计算,但仍会显示您尚未执行任何计算的消息。
这基本上是因为web应用程序发送的SessionId与Web服务不同。因此,将web.config文件中的allowCookie设置为true。
现在让我们再次运行这个网络窗口并添加一些数字。现在我们可以看到它如预期的那样工作。
因此,这里有几点需要对:进行深入思考。
如果修改了网络服务,客户端应用程序的代理类将被更新。因此,右键单击“服务参考”文件夹下的服务,并选择“更新服务参考”项目。
将allowCookies属性设置为true,这样客户端应用程序就可以接受从ASMX Web服务返回的cookie,并将它们复制到Web服务发起的所有未来请求中。这确保了在客户端和网络服务之间保持相同的会话。
如何使用web服务的会话状态,相信大家都应该通过这篇文章有所了解。
版权声明:ASP.NET如何使用网络服务的会话状态?是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。