ASP.Net Web 服务 – 如何使用会话状态

 在上次博客帖子中,我们讨论了客户端对web服务的使用。在这篇文章中我们将复习一下如何使用web服务的会话状态。

  这是上一篇文章的延续。因此请迅速的回顾之前的文章以便有一个清晰的概念。

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

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

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

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

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

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

[WebMethod(EnableSession = true)]

        public int Add(int firstNumber, int secondNumber)

        {

            List<string> calculations;

            if (Session["CALCULATIONS"] == null)

            {

                calculations = new List<string>();

            }

            else

            {

                calculations = (List<string>)Session["CALCULATIONS"];

            }

            

            string strTransaction = firstNumber.ToString() + " + "

                + secondNumber.ToString()

                + " = " + (firstNumber + secondNumber).ToString();

            calculations.Add(strTransaction);

            Session["CALCULATIONS"] = calculations;

            return firstNumber + secondNumber;

        }

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

[WebMethod(EnableSession = true)]

        public List<string> GetCalculations()

        {

            if (Session["CALCULATIONS"] == null)

            {

                List<string> calculations = new List<string>();

                calculations.Add("You have not performed any calculations");

                return calculations;

            }

            else

            {

                return (List<string>)Session["CALCULATIONS"];

            }

        }

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

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

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

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

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

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


1

2

3

4

5

6

<tr>

    <td>

        <asp:GridView ID="gvCalculations" runat="server">

        </asp:GridView>

    </td>

</tr>

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

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


1

2

3

4

gvCalculations.DataSource = client.GetCalculations();

            gvCalculations.DataBind();

            gvCalculations.HeaderRow.Cells[0].Text = "Recent Calculations";

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

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

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

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

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

  • 如果Web服务被修改了,客户端应用程序的代理类就要被更新. 为此,在Service Reference夹下面的服务上点击右键,并选择Update Service Reference项.
  • 将allowCookies属性设置成true,以便让客户端应用程序接受从ASMX Web服务返回的cookie,并将其复制到未来所有项Web 服务发起的请求中去. 这就确保了客户端和Web服务之间是维护的同一个Session.

 接下来是什么?

  在后续文章中,我们将会讨论WebMethod特性及其属性 有关的东西。

  引用: Arun Ramachandran (http://BestTEchnologyBlog.Com)

  原文地址:http://www.codeproject.com/Articles/807843/ASP-Net-Web-Services-How-to-use-session-state-in-a

时间: 2024-10-19 09:00:56

ASP.Net Web 服务 – 如何使用会话状态的相关文章

从开发的角度比较 ASP.NET Web 服务与 WCF

Windows Communication Foundation (WCF) 具有一个 ASP.NET 兼容模式选项,用户使用此选项可以对 WCF 应用程序进行编程和配置,使其像 ASP.NET Web 服务一样,并且还可以模仿这些服务的行为.以下各部分基于使用这两种技术开发应用程序的要求来比较 ASP.NET Web 服务和 WCF. 数据表示形式 一般情况下,使用 ASP.NET 开发 Web 服务首先要定义服务要使用的任意复杂数据类型.ASP.NET 依赖于 XmlSerializer 将

(转)ASP.NET Web 服务如何工作

https://msdn.microsoft.com/zh-cn/library/ms996410.aspx 发布日期 : 4/1/2004 | 更新日期 : 4/1/2004 摘要:了解 Microsoft ASP.NET Web 服务方法 (WebMethod) 如何为生成 Web 服务提供一种高效方法.WebMethod 可以将传统的 Microsoft .NET 方法公开为支持 HTTP.XML.XML 架构.SOAP 和 WSDL 的 Web 服务操作.WebMethod (.asmx

ASP.NET Web服务(ASMX)学习和代理生成

第一步:按照http://www.c-sharpcorner.com/article/getting-started-with-asp-net-web-services-part-one/ 建立项目和添加服务: 第二步:将项目发布到IIS上,获得网址:http://localhost/asmx_test/WebService_Test.asmx : 第三步:利用VS2015的wsdl命令行https://msdn.microsoft.com/en-us/library/7h3ystb6(vs.8

ASP.NET WEB API 初探

本文初步介绍如何简单创建一个ASP.NET Web Api 程序. Web Api 顾名思义就是一个Api接口,客户端可调用此接口进行业务操作.此类应用与 ASP.NET  web服务(即使用扩展名.asmx的web服务文件)有一定的相似之处,又有大不同, ASP.NET Web Api 主要是基于ASP.NET MVC 框架. 废话少说,现在开始. 我用的开发工具是Visul studio 2015. 1. 创建ASP.NET Web Api 项目. 改项目名称为DRMWebAPI,可得如下项

ASP.NET Web API是什么?

[翻译]ASP.NET Web API是什么? 说明:随微 软ASP.NET MVC 4一起发布的还有一个框架,叫做ASP.NET Web API.目前国内关注这项技术的人似乎还很少,这方面的文章也不多见.开发Web应用程序也许可以只用MVC这样的技术,而不用这项Web API技术,但如果用了,会给你的应用程序带来极大的好处.为此,本人转载并翻译了以下这篇文章,后面还会陆续翻译该项技术的一些官方教程.大家一起学 习,共同提高. Microsoft ASP.NET: What's This New

【翻译】ASP.NET Web API是什么?

参考页面: http://www.yuanjiaocheng.net/entity/linq-to-entities-projection.html http://www.yuanjiaocheng.net/entity/dbset-class.html http://www.yuanjiaocheng.net/entity/dbentityentry-class.html http://www.yuanjiaocheng.net/entity/change-tracking.html http

【转】ASP.NET Web Services如何工作

转自 http://www.cnblogs.com/zhaozhan/archive/2010/10/17/1853780.html 了解 Microsoft ASP.NET Web 服务方法 (WebMethod) 如何为生成 Web 服务提供一种高效方法.WebMethod 可以将传统的 Microsoft .NET 方法公开为支持 HTTP.XML.XML 架构.SOAP 和 WSDL 的 Web 服务操作.WebMethod (.asmx) 处理程序自动将传入的 SOAP 消息调度到相应

无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动

无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同.如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值,确保服务器接受远程请求.如果服务器位于本地计算机上,并且上面提到的注册表值不存在或者设置为 0,则状态

无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动

原文链接:http://www.cnblogs.com/IT-Bear/archive/2012/01/04/2311546.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同.如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRem