.NET3.5下Asp.net如何异步调用WebService

浅谈WebService开发二(同步与异步调用) 上文 http://blog.csdn.net/wayne20018891/article/details/7578040 已经跟大家说了,如果创建一个webservice和简单的调用,本文将注重webservice的效率调用问题,所以,我回说说如何实现同步与异步调用webservice,如果说得哪里不对或者不好的地方,欢迎大家评论指导。 首先,什么是同步,什么是异步呢?打个比方来说,小 阅读详情

在网上也找了一些,发现要么题目和内容不对应,明明是在Winform下异步调用,却写成在Asp.net异步调用WebService,有的调用方式在.NET3.5下不能通过,.NET3.5下取消了BeginXXXX,EndXXXX,奇怪,而用了以下方式。

建立一个WebService和一个WebApplication如图所示:

 

WebService代码为:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

 

namespace WebService1

{

    /// <summary>

    /// Service1 的摘要说明

    /// </summary>

    [WebService(Namespace = "http://tempuri.org/")]

    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

    [System.ComponentModel.ToolboxItem(false)]

    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。

    // [System.Web.Script.Services.ScriptService]

    public class Service1 : System.Web.Services.WebService

    {

        [WebMethod]

        public string HelloWorld()

        {

            return "Hello World";

        }

    }

}

 

以下为同步调用WebService

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

namespace WebApplication1

{

    public partial class _Default : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            //同步调用WebService           

            Response.Write("aaa<br>");

            localhost.Service1 n = new localhost.Service1();

            Response.Write(n.HelloWorld().ToString()+"<br/>");

            Response.Write("bbb<br>");

        }

    }

}

输出结果:

aaa

Hello World

bbb

以下为异步调用WebService

1、需要在Default.aspx页的Page里加入Async="true"

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" Async="true"  %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

    </div>

    </form>

</body>

</html>

2、在Default.aspx.cs里代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

namespace WebApplication1

{

    public partial class _Default : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            //异步调用WebService

            Response.Write("aaa<br>");

            localhost.Service1 n = new localhost.Service1();

            n.HelloWorldCompleted += delegate(object sender2, localhost.HelloWorldCompletedEventArgs e2)

            {

             //e.Result获取处理结果

                Response.Write(e2.Result.ToString()+"<br/>");

            };

            n.HelloWorldAsync();

            Response.Write("bbb<br>");

        }

    }

}

运行结果:

aaa

bbb

Hello World

试验结果:发现Hello World时在输出aaa,bbb之后输出Hello World的。

使用总结:

1、在ASPX页面设置一个允许异步调用的属性 Async="true"这样就可以在这个页面里进行异步调用了

2、同步调用的方法和异步调用的方法不一样,异步调用的方法是WebServic的方法名+Async()作为方法名,同步调用的方法就是WebService的方法名。

以上采用了匿名方法。将方法体的代码和委托对象相关联,如果要单独定义一个方法,代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

namespace WebApplication1

{

    public partial class _Default : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            //异步调用WebService           

            Response.Write("aaa<br>");

            localhost.Service1 n = new localhost.Service1();

            n.HelloWorldCompleted += new localhost.HelloWorldCompletedEventHandler(HelloWorldCompleted);

            n.HelloWorldAsync();

            Response.Write("bbb<br>");

        }

 

        //完成事件处理方法

        void HelloWorldCompleted(object sender, localhost.HelloWorldCompletedEventArgs e)

        {

            if (e.Error != null)

                throw e.Error;

            Response.Write(e.Result.ToString() + "<br>");   //e.Result获取处理结果

        }

    }

}

 

.net3.5 Webservice 实例源码 项目名称:.net3.5 Webservice 实例源码 开发人:SkyGhost QQ:16349023 Email:admin@xo68.com 时间:2010-9-25 环境:VS2008 说明: 实例方案中有四个子项目,分别是webService,webservice后置代码库,网站调用实例,窗体调用实例。 希望能给大家一定的帮助,少走弯路。 立即下载

相关推荐

jquery调用基于.NET Framework 3.5的WebService返回JSON数据

jquery调用基于.NET Framework 3.5的WebService返回JSON数据

.Net3.5 Socket事件通知封装类

基于.Net3.5编写,全异步操作。支持TCP、UDP两种方式,全事件模式通知。Socket35.vb **********************************************************************                适用于 .Net3.5版本**************************************

Yellow 痕迹 1100

WebSocket4Net.dll

编译完成可用的WebSocket类库,包含WebSocket4Net.dll和SuperSocket.ClientEngine.dll

C#异步编程和await/async

在.NET 1.0开始微软就对异步编程做了相应的支持——即异步编程模型(APM), 之后在.NET 2.0中又提出了基于事件的异步编程模型(EAP),.NET 4.0中又提出了基于任务的异步编程模型(TAP),在.NET 4.5(对应于C#5.0)中提供了async和await两个关键字。…待添加C# 版本和.NET 版本对应关系:C# 版本 .NET Framework版本 Visual Stud

David 2447

多线程线程池使用 (C#3.5) 高效

多线程线程池使用 (C#3.5) 高效

.net分布式异步队列等待技术

实用的基于C#的开发教程,视频教程,分布式异步队列并发。

WEB SERVICE的价值与特性==》同步OR异步?

为什么80%的码农都做不了架构师?>>> ...

weixin_33893473的博客 218

不同比例尺地质数据共享

包含20w、25w、100w、250w比例尺地质数据共享。

sinat_38828898的博客 2309

C#不同方式调用webservice

继上一篇不添加引用调用webservice这次我们谈谈添加引用调用webservice的几种方式。 首先我们可以看到添加webservice引用有2种,如图: 一种叫service References,另一种叫Web Reference(.net framework 3.5或以下才有) 现在我们就来看看分别在这两种引用下调用webservice。 1、Service Referenc

Hauk.Wong 9746

手把手教你用VS Code + Codex在WSL中高效编程(避坑指南)

本文提供了一份详细的避坑指南,教你如何在WSL环境中高效配置和使用VS Code与OpenAI Codex。文章核心在于解决WSL内Codex扩展的OAuth登录失败问题,推荐将扩展安装在Windows本地,并通过UNC路径直接访问WSL文件系统,从而实现AI辅助编程与Linux开发环境的无缝结合,提升编码效率。

weixin_28677451的博客 1063

全球、中国各省市县等行政区划(含十段线)shape及geosjon数据免费下载

免费下载全球、中国各省市县等行政区划(含十段线)shape及geosjon数据

mhf403445651的博客 3459

【.NET】 动态调用webservice

如有错误,欢迎指正 一、前言 转载自https://www.cnblogs.com/dannyqiu/articles/2063664.html 。 虽然右键添加服务引用,能够很方便的使用,但是对于会有IP改变的需求情况下。 使用配置文件,配置IP,动态的调用webService。下面是一个WebServiceHelper类。可能需要添加引用-&gt;system.web.service ...

zyk的博客 586

Agentic AI应用架构师如何提升AI应用的灵活性

可扩展性(Scalability):快速添加新功能或扩展任务范围(如Agent从“客服”扩展到“供应链管理”);可修改性(Modifiability):调整Agent的决策逻辑或动作策略,无需重构整个系统;鲁棒性(Robustness):在环境异常或数据噪声下保持性能稳定;自适应(Self-Adaptation):自主学习新场景,无需人工干预。状态空间(S):Agent能感知的所有内部/外部状态(如用户需求、环境数据);动作空间(A):Agent能执行的所有动作(如调用工具、发送消息);

项目管理的博客 581

asp.net Js调用 WebService

<br /><br />ASP.Net AJAX(Atlas)终于集成到.Net Framework v3.5中了。使用方式和以往的很相识,只是名字空间稍微发生了改变。<br />本文将主要讲解最基本最常见的用法。附件中有Sample代码。<br /><br />Sample 1: 调用WebService<br /><br />建立一个WebService在站点目录下,添加属性ScriptService<br />using System.Web.Script.Services; // <-- 添加名字空

Ubuntu菜鸟天堂 1112

04-协议基础03:USB 2.0信号与电气特性

USB 2.0使用两根差分信号线D+/D-进行数据传输,支持低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)三种速率。USB总线为主从模式,所有事务由Host发起。端电阻值作用HostRpd(D+)15KΩ±5%下拉,默认低电平HostRpd(D-)15KΩ±5%下拉,默认低电平全速设备Rpu(D+)1.5KΩ±5%上拉到3.3V,标识全速低速设备Rpu(D-)1.5KΩ±5%上拉到3.3V,标识低速USB 2.0硬件要点。

内核笔记 104

MFC属性网格控件(CMFCPropertyGridCtrl)完全指南:构建专业属性编辑界面

本文详细介绍了MFC中的CMFCPropertyGridCtrl控件的使用方法。主要内容包括:控件基础用法(初始化、添加属性、事件处理)、高级设置(自定义外观、创建属性类型、动态更新)、派生类实现(自定义绘制、搜索过滤功能)、界面集成技巧(对话框布局、属性编辑器)以及实际应用示例。文章重点讲解了如何通过继承和自定义实现复杂功能,并提供了性能优化、多语言支持等最佳实践方案。该控件适用于需要大量参数配置的应用程序,能够创建类似Visual Studio属性窗口的专业界面。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 154

AJAX / AJAX框架 / AJAX.NET (Professional) / ASP.NET AJAX

学习或者研究一个东西,前提至少得先明白它是一个什么东西。 用过Ajaxpro,了解过Asp.net ajax,最近在学习jQuery,为了理清楚这些东西之间的关系和区别,到网上找了点资料,发现园子里“老赵”作了解释,下面的一段就摘自其中。原文:觉得有必要来澄清几组重要概念   这是我们见过的混淆最多的一组概念。不过当去年AJAX技术如火如荼,AJAX框架层出不穷,而微软又推出...

abbkc20864的专栏 133

基于A*算法的二维栅格地图路径规划与避障MATLAB仿真

本文将介绍如何使用MATLAB编写基于A*算法的二维栅格地图路径规划与避障的仿真程序。我们可以使用二维数组表示地图,其中每个元素表示一个栅格的状态,例如1表示障碍物,0表示可行走区域。接下来,我们需要定义A*算法的节点类。G值表示从起始节点到当前节点的代价,H值是启发式函数估计的从当前节点到目标节点的代价。算法,我们可以有效地找到起始点到目标点的最短路径,并在仿真中进行可视化展示。算法的基本思路是从起始节点开始,按照一定的启发式函数选择下一个节点,直到找到目标节点或者遍历完所有可行走区域。

ByteWhizX的博客 1273

异步调用WEBSERVICE

异步调用WEBSERVICEWeb 服务描述语言工具 (Wsdl.exe) 生成客户端代理类来访问指定的 Web 服务时,会为该代理类提供与每个 Web 服务方法进行异步通信的两种机制。第一种机制是 Begin/End 模式。第二种机制是在 .NET Framework 2.0 版中提供的事件驱动的异步编程模式。Begin/End 调用模式Wsdl.exe 为 Web 服务中发布的每项

3140

Hadoop在大数据领域的电商数据分析案例

随着电商行业的迅猛发展,每天都会产生海量的数据,如用户浏览记录、购买行为、商品信息等。如何从这些数据中提取有价值的信息,为电商企业的决策提供支持,成为了电商企业面临的重要问题。Hadoop作为一个开源的分布式计算平台,具有高可靠性、高扩展性和高效性等特点,能够很好地处理大数据。本文的目的就是通过实际案例,详细介绍Hadoop在电商数据分析中的应用,范围涵盖了从数据采集、存储到分析的整个流程。本文首先介绍背景信息,让读者了解Hadoop在电商数据分析中的重要性和应用场景。

Java大师兄的博客 1178

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

开发基于ASP.NET WebService的图片验证码服务

最近,工作中接到一项任务,开发一个页面验证码功能,查阅了一些网上的资料,并结合以前的绘图方面的知识,实现了如下的解决方案。生成的验证码效果如图:要解决的问题:1. 如何随机生成图片    生成System.Drawing.Bitmap对象,使用System.Drawing.Graphics向位图对象中绘图。2. 如何在WebService的方法中通过参数传递图片数据    将Bit

在路上 4536

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

简单的asp.net WebService例子

http://weixing.me/asp-net/a-simple-asp-net-webservice-eg/ 第一, 新建网站,选择类型为asp.net web 服务。 系统自动为你建立了个文件service.asmx.这就是一个最简单的web serv

Solaris_navi Tech Space 1004

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ASP.NET Ajax学习笔记(3.webservice调用)

三.调用webService: ScriptManager是ASP.NET Ajax技术中最关键的组件,每一个页面都必须包含一个ScriptManager。他包含的属性有: 1. AllowCustomErrorsRedirect—决定updatapanel局部刷新时出现错误是否跳转到自定义错误界面。 2. AsyncPostBackErr...

aegckeir70762的博客 211

asp.net 发布WebService出现的各种问题及解决方法

打开CMD,输入 C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe-i  回车 0:在计算机“.”上没有找到服务WAS。 勾选internet信息服务、microsoft.net framework3.5.1下面的所有选项 控制面板—程序和功能—打开或关闭Windows功能   1:由于 Web 服

的专栏 2793

使用ASP.NET AJAX异步调用Web Service和页面中的类方法(2):处理异步调用中的异常...

本文来自《ASP.NET AJAX程序设计 第II卷:客户端Microsoft AJAX Library相关》的第三章《异步调用Web Service和页面中的类方法》,请同时参考本章的其他文章。 3.3 处理异步调用中的异常 在传统的Web应用程序中,处理异常相对来说比较简单——即使开发者不作任何处理,浏览器也会默认地将收到的异常信息显示在浏览器中。而对于Ajax应用程序来说,事情却并不...

weixin_33754065的博客 146
上一篇: 含多项查询条件的存储过程(SQL2008)
下一篇: JavaScript如何调用WebService
aspnet2002web
博客等级 码龄21年 482粉丝 310原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值