演练:使用 ASP.NET 生成基本的 XML Web services
本主题专门介绍一项旧有技术。现在应通过使用以下链接来创建 XML Web 服务和 XML Web 服务客户端: Windows Communication Foundation.
使用 ASP.NET 开发 XML Web services 的工作从下列步骤开始:
创建一个文件扩展名为 .asmx 文件,并使用 @WebService 指令在该文件中声明一项 Web 服务
创建一个实现该 Web 服务的类。可以选择从 WebService 类派生该类。
或者,也可以将 WebServiceAttribute 特性应用于实现该 Web 服务的类。
定义构成该 Web 服务的功能的 Web 服务方法。
声明 Web 服务
在 ASP.NET 中创建 XML Web services 时,您需要将必需的 @ WebService 指令放置在文件扩展名为 .asmx 的文本文件的顶部。.asmx 文件和 @ WebService 指令的存在使 XML Web services 的 URL 地址与其实现相关联。接下来,您需要实现用于定义 XML Web services 客户端可见的方法和数据类型的 XML Web services 类。最后,需要将 XML Web services 逻辑添加到这些方法中,以便处理 XML Web services 请求并发送回响应。您定义的 XML Web services 类可以直接包括在 .asmx 文件中,也可以在一个单独文件中。如果使用单独的文件,则必须将该文件编译到某个程序集中。或者,也可以将 WebService 特性应用于实现 XML Web services 的类。实现 XML Web services 的类可以派生自 WebService 类。
声明其实现驻留在同一文件中的 Web 服务
向文件扩展名为 .asmx 的文件的顶部添加一条 @ WebService 指令,指定实现该 Web 服务的类以及实现中使用的编程语言。
可将 Class 特性设置为与 @ WebService 指令位于同一程序集中的类,也可以将其设置为单独程序集中的类。如果该类驻留在单独的程序集中,则必须将它放置在该 Web 服务所驻留的 Web 应用程序下的 \Bin 目录中。可将 Language 特性设置为 C#、VB 和 JS,这三项分别指 C#、Visual Basic .NET 和 JScript .NET。
下面的代码示例设置 @ WebService 指令的 Language 特性,并将 Class 特性设置为
Util
**,后者与前者驻留在同一文件中。<%@ WebService Language="C#" Class="Util" %>
<%@ WebService Language="VB" Class="Util" %>
声明其实现驻留在程序集中的 Web 服务
向扩展名为 .asmx 的文件的顶部添加一条 @ WebService 指令,指定实现该 Web 服务的类、包含该实现的程序集以及实现中使用的编程语言。如果使用单独的文件,则必须将该文件编译到某个程序集中。
下面的 @ WebService 指令是扩展名为 .asmx 的文件中的唯一一行,它指定
MyName.MyWebService
类驻留在承载该 Web 服务的 Web 应用程序的 \Bin 目录内的MyAssembly
程序集中。<%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>
<%@ WebService Language="VB" Class="MyName.MyWebService,MyAssembly" %>
注意: 如果不在 @ WebService 指令中指定程序集,则第一次访问该 Web 服务时,ASP.NET 将在承载该 Web 服务的 Web 应用程序的 \Bin 目录中的程序集列表中进行搜索。因此,通过提供程序集名称可以提高第一次访问时的性能。
从 WebService 类派生
实现使用 ASP.NET 创建的 Web 服务的类也可以选择从 WebService 类派生,以获得对通用 ASP.NET 对象的访问权限,例如 Application、Session、User 和 Context。
从 WebService 类派生并访问通用 ASP.NET 对象
<%@ WebService Language="C#" Class="Util" %>
using System;
using System.Web.Services;
public class Util: WebService
<%@ WebService Language="VB" Class="Util" %>
Imports System
Imports System.Web.Services
Public Class Util
Inherits WebService
应用 WebService 特性
将可选的 WebService 特性应用于实现 Web 服务的类,以便为该 Web 服务设置默认的 XML 命名空间(该命名空间原来是 http://tempuri.org),同时还用一个字符串来描述该 Web 服务。
在使该 XML Web services 可以公开使用之前,强烈建议更改此默认命名空间 http://tempuri.org。这一点很重要,因为必须将该 XML Web services 与其他可能不慎将该命名空间用作默认命名空间 (<http://tempuri.org/>) 的 XML Web services 相区分。
设置 Web 服务所属的 XML 命名空间
- 将 WebService 特性应用于实现该 Web 服务的类,并设置 Namespace 属性。
下面的代码示例将 XML 命名空间设置为 https://www.contoso.com/。
<%@ WebService Language="C#" Class="Util" Debug=true%>
using System.Web.Services;
using System;
[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService
<%@ WebService Language="VB" Class="Util"%>
Imports System.Web.Services
Imports System
<WebService(Namespace:="https://www.contoso.com/")> _
Public Class Util
Inherits WebService
定义 Web 服务方法
实现 Web 服务的类的方法不会自动具有通过 Web 进行通信的能力,但通过使用 ASP.NET 创建的 Web 服务,很容易添加该功能。若要添加此功能,请将 WebMethod 特性应用于公共方法。可通过 Web 进行通信的 Web 服务的方法称为 Web 服务方法。
声明 Web 服务方法
向实现 Web 服务的类添加公共方法。
将 WebMethod 特性应用于要映射到 Web 服务操作的公共方法。
下面的代码示例有两个公共方法,其中一个是 Web 服务方法。Multiply
方法是 Web 服务方法,因为它应用了 WebMethod 特性。
<%@ WebService Language="C#" Class="Util" %>
using System.Web.Services;
using System;
[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService
{
[ WebMethod] public long Multiply(int a, int b)
{
return a * b;
}
}
<%@ WebService Language="VB" Class="Util" %>
Imports System.Web.Services
Imports System
<WebService(Namespace:="https://www.contoso.com/")>
Public Class Util
Inherits WebService
< WebMethod()> _ Public Function Multiply(a As Integer, b As Integer) As Long
Return a * b
End Function
End Class
另请参见
参考
WebService Class
WebServiceAttribute Class
WebMethodAttribute Class