ASP. NET中的webservice

2024-09-05 09:08
文章标签 webservice asp net

本文主要是介绍ASP. NET中的webservice,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在分布式计算中经常要用到WebService,为了更好的学习WebService,写此文供自己记忆。

编译环境:VS2008

在项目中添加一个名称为MyWebService.asmx的Web服务,App_Code文件夹下会新增一个MyWebService.cs文件,编写代码如下:

[csharp] view plain copy print ?
  1. using System;  
  2. using System.Collections;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6. using System.Web.Services.Protocols;  
  7. using System.Xml.Linq;  
  8.   
  9. /// <summary>  
  10. ///MyWebService 的摘要说明  
  11. /// </summary>  
  12. [WebService(Namespace = "http://tempuri.org/")]  
  13. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  14. //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。   
  15. // [System.Web.Script.Services.ScriptService]  
  16. public class MyWebService : System.Web.Services.WebService {  
  17.   
  18.     public MyWebService () {  
  19.   
  20.         //如果使用设计的组件,请取消注释以下行   
  21.         //InitializeComponent();   
  22.     }  
  23.   
  24.     [WebMethod]  
  25.     public string HelloWorld() {  
  26.         return "Hello World";  
  27.     }  
  28.       
  29. }  
using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;/// <summary>
///MyWebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
// [System.Web.Script.Services.ScriptService]
public class MyWebService : System.Web.Services.WebService {public MyWebService () {//如果使用设计的组件,请取消注释以下行 //InitializeComponent(); }[WebMethod]public string HelloWorld() {return "Hello World";}}

写好WebService以后,在项目上右键选择“添加Web引用”,可以给WebService起一个命名空间localhost。


添加Web引用成功如下图所示:


下面我们写客户端代码

前端代码:

[html] view plain copy print ?
  1. <form id="form1" runat="server">  
  2.     <div>  
  3.         <asp:Button ID="Button1" runat="server" Text="同步调用WebService"  />  
  4.         <asp:Button ID="Button2" runat="server" Text="异步调用WebService"  />  
  5.         <asp:Button ID="Button3" runat="server" Text="另一种异步调用WebService"  />  
  6.     </div>  
  7. </form>  
<form id="form1" runat="server"><div><asp:Button ID="Button1" runat="server" Text="同步调用WebService"  /><asp:Button ID="Button2" runat="server" Text="异步调用WebService"  /><asp:Button ID="Button3" runat="server" Text="另一种异步调用WebService"  /></div>
</form>

后台代码:

[csharp] view plain copy print ?
  1. using System;  
  2. using System.Configuration;  
  3. using System.Data;  
  4. using System.Linq;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.HtmlControls;  
  9. using System.Web.UI.WebControls;  
  10. using System.Web.UI.WebControls.WebParts;  
  11. using System.Xml.Linq;  
  12.   
  13. public partial class _Default : System.Web.UI.Page   
  14. {  
  15.     protected void Page_Load(object sender, EventArgs e)  
  16.     {         
  17.        Button1.Click += new EventHandler(Button1_Click);  
  18.        Button2.Click += new EventHandler(Button2_Click);  
  19.        Button3.Click += new EventHandler(Button3_Click);  
  20.     }  
  21.  
  22.  
  23.     #region 同步调用  
  24.   
  25.     void Button1_Click(object sender, EventArgs e)  
  26.     {  
  27.         localhost.MyWebService mws = new localhost.MyWebService();  
  28.         string s = mws.HelloWorld();  
  29.         Response.Write("<script>alert('"+s+"')</script>");  
  30.         //Response.End();  
  31.     }  
  32.  
  33.     #endregion  
  34.  
  35.  
  36.     #region 异步调用  
  37.   
  38.     void Button2_Click(object sender, EventArgs e)  
  39.     {  
  40.         localhost.MyWebService AsyMWS = new localhost.MyWebService();  
  41.         IAsyncResult asyncResult = AsyMWS.BeginHelloWorld(new AsyncCallback(CallbackFunc), "AsyncState");  
  42.         string s = AsyMWS.EndHelloWorld(asyncResult);  
  43.         Response.Write("<script>alert('" + s + "')</script>");  
  44.     }  
  45.   
  46.     void CallbackFunc(IAsyncResult r)  
  47.     {  
  48.         Response.Write("<script>alert('异步调用完成!')</script>");  
  49.     }  
  50.  
  51.     #endregion  
  52.  
  53.  
  54.     #region 另一种异步调用  
  55.   
  56.     void Button3_Click(object sender, EventArgs e)  
  57.     {  
  58.         localhost.MyWebService AsyMWS = new localhost.MyWebService();  
  59.         AsyMWS.HelloWorldCompleted += new localhost.HelloWorldCompletedEventHandler(AsyMWS_HelloWorldCompleted);  
  60.         AsyMWS.HelloWorldAsync();  
  61.     }  
  62.   
  63.     void AsyMWS_HelloWorldCompleted(object sender, localhost.HelloWorldCompletedEventArgs e)  
  64.     {  
  65.         string s = e.Result;  
  66.         Response.Write("<script>alert('"+s+"')</script>");  
  67.     }  
  68.  
  69.     #endregion  
  70. }  
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;public partial class _Default : System.Web.UI.Page 
{protected void Page_Load(object sender, EventArgs e){       Button1.Click += new EventHandler(Button1_Click);Button2.Click += new EventHandler(Button2_Click);Button3.Click += new EventHandler(Button3_Click);}#region 同步调用void Button1_Click(object sender, EventArgs e){localhost.MyWebService mws = new localhost.MyWebService();string s = mws.HelloWorld();Response.Write("<script>alert('"+s+"')</script>");//Response.End();}#endregion#region 异步调用void Button2_Click(object sender, EventArgs e){localhost.MyWebService AsyMWS = new localhost.MyWebService();IAsyncResult asyncResult = AsyMWS.BeginHelloWorld(new AsyncCallback(CallbackFunc), "AsyncState");string s = AsyMWS.EndHelloWorld(asyncResult);Response.Write("<script>alert('" + s + "')</script>");}void CallbackFunc(IAsyncResult r){Response.Write("<script>alert('异步调用完成!')</script>");}#endregion#region 另一种异步调用void Button3_Click(object sender, EventArgs e){localhost.MyWebService AsyMWS = new localhost.MyWebService();AsyMWS.HelloWorldCompleted += new localhost.HelloWorldCompletedEventHandler(AsyMWS_HelloWorldCompleted);AsyMWS.HelloWorldAsync();}void AsyMWS_HelloWorldCompleted(object sender, localhost.HelloWorldCompletedEventArgs e){string s = e.Result;Response.Write("<script>alert('"+s+"')</script>");}#endregion
}

注:若要使用最后一种异步调用方式需要在前端代码中写入Async="true",如下图


这篇关于ASP. NET中的webservice的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138525

相关文章

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

.NET 自定义过滤器 - ActionFilterAttribute

这个代码片段定义了一个自定义的 ASP.NET Core 过滤器(GuardModelStateAttribute),用于在控制器动作执行之前验证模型状态(ModelState)。如果模型状态无效,则构造一个 ProblemDetails 对象来描述错误,并返回一个 BadRequest 响应。 代码片段: /// <summary>/// 验证 ModelState 是否有效/// </

Java中WebService接口的生成、打包成.exe、设置成Windows服务、及其调用、Apache CXF调用

一、Java中WebService接口的生成: 1、在eclipse工具中新建一个普通的JAVA项目,新建一个java类:JwsServiceHello.java package com.accord.ws;import javax.jws.WebMethod;import javax.jws.WebService;import javax.xml.ws.Endpoint;/*** Ti

.Net Mvc-导出PDF-思路方案

效果图: 导语:     在我们做项目的过程中,经常会遇到一些服务性的需求,感到特别困扰,明明实用的价值不高,但是还是得实现;     因此小客在这里整理一下自己导出PDF的一些思路,供大家参考。     网上有很多导出PDF运用到的插件,大家也可以看看其他插件的使用,学习学习; 提要:     这里我使用的是-iTextSharp,供大家参考参考,借鉴方案,完善思路,补充自己,一起学习

.net MVC 导出Word--思路详解

序言:          一般在项目的开发过程中,总会接收到一个个需求,其中将数据转换成Work来下载,是一个很常见的需求;          那么,我们改如何处理这种需求,并输出实现呢?          在做的过程中,去思考 1、第一步:首先确认,Work的存在位置,并创建字符输出路:             //在的项目中创建一个存储work的文件夹             string

asp.net 中GridView的使用方法

可以看看,学习学习 https://blog.csdn.net/zou15093087438/article/details/79637042

webservice系列3---chain

本节摘要:本节主要介绍webservice的高级特性chain的开发和配置 1.引言       之前在上webservice系列2---javabean&handler中讲了handler的使用,当有多个handler的时候,难道我们要一个一个的在wsdd文件中配置,然后一个一个的引入到需要的webservice中码?of course ,no。Apache组织已经替我们考虑到了这种需求,ch

webservice的安全机制2---handler实现

本节摘要:本节介绍使用handler的方式来实现webservice的IP地址的校验。   1.引言 前一节介绍了使用users.lst文件来实现webservice的用户名和密码的校验, 本节介绍使用webservice的handler来实现webservice的安全校验。 这里,不用用户名和密码来实现安全校验,换一种方式,采用IP地址校验的方式。 这里通过一个配置文件来控制是否打开