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
转载于:https://www.cnblogs.com/ranran/p/3945321.html
ASP.Net Web 服务 – 如何使用会话状态相关推荐
- ASP.NET Web 服务、企业服务和 .NET Remoting 的性能
http://www.uml.org.cn/net/200601102.htm 转载于:https://www.cnblogs.com/dynasty/archive/2006/01/11/31550 ...
- 使用ASP.Net 3.5 的Ajax与Web服务开发实例
本文继续介绍使用ASP.NET3.5中的AJAX环境中如何从客户端JavaScript调用Web服务方法.编写本文的目的在于让大家深刻了解基于ASP.Net3.5的Ajax和Web的服务,虽然例子比较 ...
- 利用微软Atlas消费外部Web服务
摘要 为了从Atlas中消费外部Web服务,你可以为这些服务构建一个基于服务器的Web服务代理.幸好,你可以利用Visual Studio和Atlas特征来处理这其中的大部分工作. 一.引言 如今 ...
- ASP.NET Web 项目文件类型
网站应用程序可包含不同的文件类型.默认情况下,某些文件类型由 ASP.NET 支持和管理,而其他文件类型则由 IIS 服务器支持和管理.(可选)可以指定所有类型都应由 ASP.NET 处理. 大多数 ...
- 手把手教你在.NET中创建Web服务
最近发现在.NET平台下使用Web服务还是很简单的. 下面举个在.NET平台下创建Web服务的简单例子.首先用Visul Studio .Net创建一个C# 项目Asp.Net Web服务程序,源代码 ...
- 感谢在俄勒冈州Develo的SAOs软件协会参加我的演讲“音乐背后的Web服务”的所有人...
Thanks to everyone who attended my talk "Web Services: Behind the Music" at the SAO's (Sof ...
- Web服务與.NET Remotin的選擇
使用 Microsoft .NET 建立分布式应用程序 Priya Dhawan Tim Ewald Microsoft Developer Network 2002 年 9 月 适用于: Micro ...
- 异步调用Web服务方法
基于Ajax技术构建的门户是web 2.0这一代中最为成功的Web应用程序.而这块市场上iGoogle和Pageflakes这两大站点已经走在了时代的前列. 当你打开Pageflakes,将会看到如下 ...
- 今天,有关Web服务的许多想法都没有,因为克里斯·克里斯(Chris Sells)即将推出A hrefhttpwwwsellsbrothersco...
Lot's of thoughts on Web Services today...it's no because doubt of Chris Sell's upcoming WebServices ...
最新文章
- 开发者数量2025年预计破亿,GitHub最新年度报告来啦!
- 【Java报错】多数据源mapper异常more than one `primary` bean found among candidates: [sqlSessionFactory] 问题分析解决
- B02_NumPy数据类型(常见基本数据类型列举,数据类型对象 (dtype))
- 剑指offer03-数组中重复的数字(java)|leetcode刷题
- 线段树动态开点区间加区间求和
- 隐藏linux操作系统版本信息,linux centos 如何查看操作系统版本信息?
- 磁盘的磁道(Track)
- linux的基础知识——网络套接字函数
- 【oracle】手动安装EM
- 今天开始记录我的开发生涯
- linux配置apache不管用,Linux中apache配置文件详解
- springmvc执行流程_SpringMVC
- Cesium:点击实体后在实体上方添加div,并随地球转动不断更新位置
- java 连接hadoop集群_hadoop集群访问——Hadoop客户端访问、Java API访问
- vmware VCPU的一点理解记录
- Android 融云即时通讯简单概述
- 大二暑假立秋学习总结
- Android常见公有方法(隐藏虚拟按键/隐藏软键盘/获取屏幕宽高等)
- 嵌入式开发需要学mysql吗_学习嵌入式开发需要学习哪些课程?如何学习?
- 拆分可再生能源业务上市,华润电力意欲何为?
热门文章
- 梦想与现实之间的距离
- 关于 HttpServlet、GenericServlet 和 Servlet 的关系
- gps频率范围_以GPS为例讲解射频接收阻抗匹配的过程
- 线性回归(五)---弹性网络回归
- 简易 Python 3 运行 Python 2 代码
- 今天被公司安排给候选者进行初面,分享我的6道面试题
- mongodb最多数据库_2020 年3 月数据库排行:前 10 整体下行,出新技术了?
- win10 linux开发环境搭建,win10子系统linux.ubuntu开发环境搭建
- python之路 mysql 博客园_python之路--MySQL数据库初识
- firewalld的配置和使用