在网上也找了一些,发现要么题目和内容不对应,明明是在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获取处理结果
}
}
}
分享到:
相关推荐
此资源集包含了随书光盘中的多个文件,提供了丰富的代码示例,帮助读者深入理解如何在ASP.NET 3.5框架下运用AJAX提升Web应用的用户体验。 首先,`DropDatabase.sql`和`BuildDemoDatabase.sql`是SQL脚本文件,用于...
本文将深入探讨如何在ASP.NET 3.5环境中从客户端JavaScript调用Web服务方法。 首先,为了允许客户端JavaScript调用Web服务,我们需要在页面中添加`<asp:ScriptManager>`控件。这个控件会自动生成JavaScript代理类,...
在本文中,我们将深入探讨如何使用jQuery来调用基于.NET Framework 3.5的Web服务,并接收以JSON格式返回的数据。jQuery是一个强大的JavaScript库,它简化了与服务器端的交互,而.NET Framework 3.5提供了创建Web服务...
当用户在页面上选择城市后,JavaScript会触发一个异步调用,调用后台的Web服务方法,传递城市名或ID作为参数。Web服务接收到请求后,获取天气数据并返回。然后,JavaScript将收到的数据更新到`UpdatePanel`内的元素...
WebService 异步调用 WebService 异步调用是指在客户端和服务器端之间进行异步通信的一种方式。在这种方式下,客户端不需要等待服务器端的响应,而可以继续执行其他任务。WebService 异步调用可以提高系统的响应...
在.NET 3.5框架下,使用C#开发的客户端应用程序与ASP.NET Web服务交互时,可能会遇到上传大文件的问题。这种问题通常是由于多种因素引起的,包括但不限于服务器配置、网络限制、请求大小限制以及编码方式等。下面...
为了提供更好的用户体验,可以使用jQuery的`$.ajax`或`$.get`函数异步调用WebService,这样无需刷新整个页面即可更新天气信息。 8. **安全性与性能**: 考虑到安全性和性能,可以对WebService进行身份验证,限制...
在Asp.net开发中,有时候我们需要在客户端与服务器端之间进行异步通信,这时Web服务(Web Service)和Ajax技术就显得尤为重要。本示例主要介绍如何在Asp.net环境中,利用ScriptManager组件来调用Web服务,实现客户端...
在*** Core中调用WebService的方法主要涉及到以下几个知识点: 1. **背景知识和需求理解**: - 了解*** Core:*** Core是一种开源的、跨平台的框架,用于构建现代web应用程序和API。 - 了解WebService:...
此外,ASP.NET还支持通过Web服务(WebService)进行AJAX调用。创建一个ASMX文件,定义一个Web方法: ```csharp [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles....
本示例主要展示了如何在C#中创建一个简单的Web服务,并利用jQuery进行调用,以及如何返回自定义的JSON数据,而非依赖ASP.NET默认的`{d:content}`格式。 首先,创建一个新的ASP.NET Web服务项目。在Visual Studio中...
本示例“异步调用WebService.zip”着重展示了如何在ASP.NET环境中实现异步调用Web服务,从而提高应用程序的响应速度和性能。 首先,让我们了解什么是异步调用。在传统的同步调用中,程序会等待一个操作完成后再执行...
在ASP.NET中,jQuery调用WebService进行异步通信时,主要通过jQuery的ajax方法实现。处理返回结果的关键在于理解返回数据的类型和对应的处理方式。对于返回字符串、数组或复杂对象,WebMethod可以通过设置不同的返回...
在实际应用中,ASP.NET Web Service还可以与其他技术结合使用,如AJAX(Asynchronous JavaScript and XML)以实现异步通信,提高用户体验;或者与WCF(Windows Communication Foundation)集成,利用其更强大的功能...
另外,可以考虑使用异步调用提高性能,或者利用缓存策略减少不必要的网络请求。 在实际开发中,可能还需要处理数据类型转换、序列化和反序列化等问题,因为Java和.NET的数据类型可能存在差异。同时,确保你的Java...
在JavaScript(JS)中调用.NET Web Service是跨平台通信的一种常见方式,它允许Web应用程序与服务器端的.NET服务进行交互,实现数据的交换。本文将深入探讨如何使用JavaScript来调用.NET Web Service,以及涉及的...
在本项目中,我们将探讨如何使用ASP.NET技术,结合Web服务(WebService)和DataSet来创建一个火车票查询系统。这是一个常见的Web应用程序开发实践,旨在提供用户友好的界面,查询全国范围内的火车票信息。 首先,...
虽然题目提到的是同步调用,但值得一提的是,.NET Framework也支持异步调用Web Service,这对于处理耗时的操作或避免阻塞UI线程非常重要。异步调用通常涉及BeginXXX和EndXXX方法对。 5. **RealMeter**: 提到的...
异步调用ASP.NET WebService方法 ASP.NET WebService(.asmx)提供了一种创建可跨域访问的服务接口。同样,jQuery的$.ajax()可以用于调用这些服务。服务方法需要定义为WebMethod,并启用静态方法,以便通过HTTP...