新建一个空网站项目,添加新建项 “ Web 服务 ”。

一、WebServiceDemo.asmx 文件,默认内容如下:

  1. <%@ WebService Language="C#" CodeBehind="WebServiceDemo.asmx.cs" Class="WebServie.WebServiceDemo" %>

二、WebServiceDemo.asmx.cs 文件,默认内容如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Services;
  6.  
  7. namespace WebServie
  8. {
  9. /// <summary>
  10. /// WebServiceDemo 的摘要说明
  11. /// </summary>
  12. [WebService(Namespace = "http://tempuri.org/")]
  13. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  14. [System.ComponentModel.ToolboxItem(false)]
  15. // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
  16. // [System.Web.Script.Services.ScriptService]
  17. public class WebServiceDemo : System.Web.Services.WebService
  18. {
  19.  
  20. [WebMethod]
  21. public string HelloWorld()
  22. {
  23. return "Hello World";
  24. }
  25. }
  26. }

  如上源码中,黄色标记 “ using System.Web.Services; ” 为必须引入的命名空间。

  继承层次:WebServiceDemo 继承自 System.Web.Services 命名空间下的 WebService 类 → 继承自 System.Web.Services 命名空间下的MarshalByValueComponent 类 → 继承自 System.ComponentModel 命名空间下的 IComponent, IDisposable, IServiceProvider 三个接口。

  WebService 主要包含 WebService 、SoapDocumentService、WebServiceBinding三个属性。若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,需取消对ScriptService 属性的注释。

  1、WebService 属性:用于向 XML Web services 添加附加信息,如描述其功能的字符串。

  1. using System;
  2.  
  3. namespace System.Web.Services
  4. {
  5. // 用于向 XML Web services 添加附加信息,如描述其功能的字符串。
  6. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)]
  7. public sealed class WebServiceAttribute : Attribute
  8. {
  9. // Namespace的默认值
  10. // property.此字段为常数。
  11. public const string DefaultNamespace = "http://tempuri.org/";
  12.  
  13. // 初始化 System.Web.Services.WebServiceAttribute 类的新实例。
  14. public WebServiceAttribute();
  15.  
  16. // XML Web services 的描述性消息。
  17. // 对 XML Web services 的功能进行描述的文本。
  18. public string Description { get; set; }
  19.  
  20. // 获取或设置 XML Web services 的名称。
  21. // 默认值是实现 XML Web services 的类的名称。
  22. public string Name { get; set; }
  23.  
  24. // 获取或设置用于 XML Web services 的默认 XML 命名空间。
  25. // 默认值在 System.Web.Services.WebServiceAttribute.DefaultNamespace属性中指定。
  26. public string Namespace { get; set; }
  27. }
  28. }

  2、SoapDocumentServiceAttribute 属性:

  1. using System;
  2. using System.Web.Services.Description;
  3.  
  4. namespace System.Web.Services.Protocols
  5. {
  6. // 设置在 XML Web services 内发送到 XML Web services 方法的 SOAP 请求和从 XML Web services 方法发回的 SOAP 响应的默认格式。
  7. [AttributeUsage(AttributeTargets.Class)]
  8. public sealed class SoapDocumentServiceAttribute : Attribute
  9. {
  10. //初始化一个 SoapDocumentServiceAttribute 类的新实例,将所有属性都设置为其默认值。
  11. public SoapDocumentServiceAttribute();
  12.  
  13. //初始化一个 SoapDocumentServiceAttribute 类的新实例,设置参数的格式设置。
  14. // 参数:
  15. // use:XML Web services 的参数格式设置。设置 SoapDocumentServiceAttribute.Use 属性。
  16. public SoapDocumentServiceAttribute(SoapBindingUse use);
  17.  
  18. //初始化 SoapDocumentServiceAttribute 类的新实例,该类设置参数的格式设置并设置参数是否封装在 SOAP 消息中的 Body 元素下的单个 XML 元素中。
  19. // 参数:
    // use:参数格式设置样式。设置 SoapDocumentServiceAttribute.Use 属性。
  20. // paramStyle:设置参数是否封装在 XML Web services 中发往和来自 XML Web services 方法的 SOAP 消息中的 Body 元素下的单个
  21. // XML 元素中。设置 ParameterStyle 属性。
  22. public SoapDocumentServiceAttribute(SoapBindingUse use, SoapParameterStyle paramStyle);
  23.  
  24. //获取或设置用来控制参数是否封装在 XML Web services 的 XML Web services 方法的 SOAP 消息 XML 部分中 <Body> 元素之后的单个元素中的默认设置。
  25. // 返回结果:
  26. // 在 XML Web services 中发往 XML Web services 方法的 SOAP 的请求和从 XML Web services 中的
  27. // XML Web services 方法发回的 SOAP 响应的默认 SoapParameterStyle。如果未设置,则默认为 SoapParameterStyle.Wrapped。
  28. public SoapParameterStyle ParameterStyle { get; set; }
  29.  
  30. //获取或设置将 SOAP 消息发送到 XML Web services 的方式。
  31. // 返回结果:SoapServiceRoutingStyle,表示将 SOAP 消息发送到 XML Web services 的方式。默认值为 SoapServiceRoutingStyle.SoapAction。
  32. public SoapServiceRoutingStyle RoutingStyle { get; set; }
  33.  
  34. //获取或设置 XML Web services 的默认参数格式设置。
  35. // 返回结果:XML Web services 的默认 SoapBindingUse。如果未设置,则默认为 SoapBindingUse.Literal。
  36. public SoapBindingUse Use { get; set; }
  37. }
  38. }

  3、WebServiceBinding 属性:声明定义一个或多个 XML Web services 方法的绑定。无法继承此类。

  1. using System;
  2.  
  3. namespace System.Web.Services
  4. {
  5. //声明定义一个或多个 XML Web services 方法的绑定。无法继承此类。
  6. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = true)]
  7. public sealed class WebServiceBindingAttribute : Attribute
  8. {
  9. // 初始化一个 WebServiceBindingAttribute 的实例
    public WebServiceBindingAttribute();
  10.  
  11. // 通过设置 XML Web services 方法正在实现的绑定的名称初始化 System.Web.Services.WebServiceBindingAttribute 类的新实例
  12. // 参数:
  13. // name:XML Web services 方法为其实现操作的绑定的名称。设置 System.Web.Services.WebServiceBindingAttribute.Name 属性。
  14. public WebServiceBindingAttribute(string name);
  15.  
  16. //初始化 System.Web.Services.WebServiceBindingAttribute 类的新实例。
  17. // 参数:
  18. // name:XML Web services 方法为其实现操作的绑定的名称。设置 System.Web.Services.WebServiceBindingAttribute.Name 属性。
  19. // ns:与该绑定关联的命名空间。设置 System.Web.Services.WebServiceBindingAttribute.Namespace 属性。
  20. public WebServiceBindingAttribute(string name, string ns);
  21.  
  22. //初始化 System.Web.Services.WebServiceBindingAttribute 类的新实例。
    // 参数:
  23. // name:XML Web services 方法为其实现操作的绑定的名称。设置 System.Web.Services.WebServiceBindingAttribute.Name 属性。
  24. // ns:与该绑定关联的命名空间。设置 System.Web.Services.WebServiceBindingAttribute.Namespace 属性。
  25. // location:定义绑定的位置。
  26. public WebServiceBindingAttribute(string name, string ns, string location);
  27.  
  28. // 摘要:获取或设置绑定声称所符合的 Web 服务互操作性 (WSI) 规范。
  29. // 返回结果:System.Web.Services.WsiProfiles 值之一,指示 WSI 规范。
  30. public WsiProfiles ConformsTo { get; set; }
  31.  
  32. // 摘要:获取或设置一个值,该值指示绑定是否发出一致性声称。
  33. // 返回结果:如果绑定发出一致性声称,则为 true;否则为 false。
  34. public bool EmitConformanceClaims { get; set; }
  35. // 摘要:获取或设置定义绑定的位置。
  36. // 返回结果:定义绑定的位置。默认为此属性应用到的 XML Web services 的 URL。
  37. public string Location { get; set; }
  38.  
  39. // 摘要:获取或设置绑定的名称。
  40. // 返回结果:绑定的名称。默认为追加了“Soap”的 XML Web services 名称。
  41. public string Name { get; set; }
  42.  
  43. // 摘要:获取或设置与该绑定关联的命名空间。
    // 返回结果:绑定的命名空间。默认为 http://tempuri.org/。
  44. public string Namespace { get; set; }
  45. }
  46. }

  4、ScriptServiceAttribute 属性:指示某个 Web 服务可从脚本调用。

  1. using System;
  2. using System.Runtime;
  3.  
  4. namespace System.Web.Script.Services
  5. {
  6. //指示某个 Web 服务可从脚本调用。无法继承此类。
  7. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)]
  8. public sealed class ScriptServiceAttribute : Attribute
  9. {
  10. //初始化 System.Web.Script.Services.ScriptServiceAttribute 类的新实例。
  11. [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
  12. public ScriptServiceAttribute();
  13. }
  14. }

  5、WebMethod 属性:

  WebService 通过 [WebMethod] 属性将方法暴露给调用者,有6个属性:Description、EnableSession、MessageName、TransactionOption、CacheDuration、BufferResponse。

  1. using System;
  2. using System.EnterpriseServices;
  3.  
  4. namespace System.Web.Services
  5. {
  6. //向使用 ASP.NET 创建的 XML Web services 中的某个方法添加此特性后,就可以从远程 Web 客户端调用该方法。无法继承此类。
  7. [AttributeUsage(AttributeTargets.Method)]
  8. public sealed class WebMethodAttribute : Attribute
  9. {
  10. // 初始化一个 WebMethodAttribute 新实例。
  11. public WebMethodAttribute();
  12.  
  13. // 初始化一个 WebMethodAttribute 新实例。
    // 参数:
  14. // enableSession:初始化是否为 XML Web services 方法启用会话状态。
  15. public WebMethodAttribute(bool enableSession);
  16.  
  17. //初始化 WebMethodAttribute 类的新实例。
  18. // 参数:
  19. // enableSession:初始化是否为 XML Web services 方法启用会话状态。
  20. // transactionOption:初始化 XML Web services 方法的事务支持。
  21. public WebMethodAttribute(bool enableSession, TransactionOption transactionOption);
  22.  
  23. // 初始化 WebMethodAttribute 类的新实例。
  24. // 参数:
  25. // enableSession:初始化是否为 XML Web services 方法启用会话状态。
  26. // transactionOption:初始化 XML Web services 方法的事务支持。
  27. // cacheDuration:初始化响应的缓存秒数。
  28. public WebMethodAttribute(bool enableSession, TransactionOption transactionOption, int cacheDuration);
  29.  
  30. // 初始化 WebMethodAttribute 类的新实例。
  31. // 参数:
  32. // enableSession:初始化是否为 XML Web services 方法启用会话状态。
  33. // transactionOption:初始化 XML Web services 方法的事务支持。
  34. // cacheDuration:初始化响应的缓存秒数。
  35. // bufferResponse:初始化是否缓存该请求的响应。
  36. public WebMethodAttribute(bool enableSession, TransactionOption transactionOption, int cacheDuration, bool bufferResponse);
  37.  
  38. //获取或设置是否缓存该请求的响应。
  39. // 返回结果:如果缓存该请求的响应,则为 true;否则为 false。默认为 true。
  40. public bool BufferResponse { get; set; }
  41.  
  42. //获取或设置响应应在缓存中保留的秒数。
  43. // 返回结果:响应应在缓存中保留的秒数。默认值为 0,表示不缓存响应。
  44. public int CacheDuration { get; set; }
  45.  
  46. //描述 XML Web services 方法的描述性消息。
  47. // 返回结果:描述 XML Web services 方法的描述性消息。默认值为 System.String.Empty。
  48. public string Description { get; set; }
  49.  
  50. //指示是否为 XML Web services 方法启用会话状态。
  51. // 返回结果:如果为 XML Web services 方法启用会话状态,则为 true。默认为 false。
  52. public bool EnableSession { get; set; }
  53.  
  54. //在传递到 XML Web services 方法和从 XML Web services 方法返回的数据中用于 XML Web services 方法的名称。
  55. // 返回结果:
  56. // 在传递到 XML Web services 方法和从 XML Web services 方法返回的数据中用于 XML Web services 方法的名称。默认值是XML Web services 方法的名称。
  57. public string MessageName { get; set; }
  58.  
  59. //指示 XML Web services 方法的事务支持。
  60. // 返回结果:XML Web services 方法的事务支持。默认为 TransactionOption.Disabled。
  61. public TransactionOption TransactionOption { get; set; }
  62. }
  63. }

摘要: // Initializes a new instance of the System.Web.Services.WebMethodAttribute // class.

WebService 之 实例学习一的更多相关文章

  1. webService

    什么是webService WebService,顾名思义就是基于Web的服务.它使用Web(HTTP)方式,接收和响应外部系统的某种请求.从而实现远程调用.  1:从WebService的工作模式上 ...

  2. 开始webservice了

    一.WebService到底是什么 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用 ...

  3. Spring WebService入门

    Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...

  4. 浅谈跨域以及WebService对跨域的支持

    跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问.也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源. 在 ...

  5. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  6. Atitit webservice发现机制 WS-Discovery标准的规范attilax总结

    Atitit webservice发现机制 WS-Discovery标准的规范attilax总结 1.1. WS-Discovery标准1 1.2. 一.WS-Discovery1 1.2.1.   ...

  7. java调用CXF WebService接口的两种方式

    通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...

  8. VS2010编写WebService与在IIS的发布<之简单讲解>

    工具VS2010,window环境win7 一:Webservice的创建与方法查看调用 1.新建空web应用程序项目 2.新建web服务 3.自动生成 4.直接跑起来,可以看到有2个方法 5.点击H ...

  9. webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口

    webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲 ...

随机推荐

  1. 【POJ】2151:Check the difficulty of problems【概率DP】

    Check the difficulty of problems Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8903   ...

  2. CodeForces 81D.Polycarp's Picture Gallery 乱搞

    D. Polycarp's Picture Gallery time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  3. 读书笔记_Effective_C++_条款三十三:避免遮掩继承而来的名称

    名称的遮掩可以分成变量的遮掩与函数的遮掩两类,本质都是名字的查找方式导致的,当编译器要去查找一个名字时,它一旦找到一个相符的名字,就不会再往下去找了,因此遮掩本质上是优先查找哪个名字的问题. 而查找是 ...

  4. MySQL从库com_insert无变化的原因

    大家都知道com_insert等com_xxx参数可以用来监控数据库实例的访问量,也就是我们常说的QPS.并且基于MySQL的复制原理,所有主库执行的操作都会在从库重放一遍保证数据一致,那么主库的co ...

  5. HDU 4597 Play Game (DP,记忆化搜索)

    Play Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total S ...

  6. patch补丁命令 P1 P0 P2

    http://fancyxinyu.blog.163.com/blog/static/1823213662013719115245699/ http://blog.chinaunix.net/uid- ...

  7. AMD64 Instruction-Level Debugging With dbx

    http://www.oracle.com/technetwork/server-storage/solarisstudio/documentation/amd64-dbx-364568.html A ...

  8. .Net C#向远程服务器Api上传文件

    Api服务代码一: /// <summary> /// 服务器接收接口 /// </summary> [HttpPost] [Route("ReceiveFile&q ...

  9. MVC批量添加,增加一条记录的同时添加N条集合属性所对应的个体

    类别中包含一个产品的集合属性,如何向数据库添加一条类别记录的同时,添加任意多个产品. public class Product { [DisplayName("产品名称")] pu ...

  10. Linux 操作当前时间

    一.查看和修改Linux的时区 1. 查看当前时区 命令 : "date -R" 2. 修改设置Linux服务器时区 方法 A 命令 : "tzselect" ...