ASMX 文件在 ASP.NET WebForms 中提供了创建 Web 服务的便捷方式,通过公开 Web 方法,允许远程客户端调用这些方法并获取数据。本文介绍了 ASMX 文件的基本功能、如何定义 WebService 接口、通过 HTTP 和 SOAP 请求调用 WebService 接口,以及使用 Postman 进行测试的方法。掌握这些知识,可以帮助你在 ASP.NET WebForms 项目中更好地使用 ASMX 文件创建和调用 Web 服务。
一、名词简介
1、ASMX 文件
ASMX 文件是 ASP.NET 中用于创建 Web 服务的文件。Web 服务是用于跨网络传输数据和服务的标准方法,使不同平台和编程语言的系统可以互相通信。通过 ASMX 文件,开发者可以创建基于 SOAP 协议 / HTTP 协议 的 Web 服务,这些服务可以被各种客户端(如浏览器、移动应用程序、其他服务器应用程序)调用。
ASMX 文件主要功能包括:
- 提供跨平台、跨语言的服务接口。
- 支持标准的 SOAP 协议进行数据交换。
- 能够通过 HTTP/HTTPS 协议传输数据。
- 允许公开 Web 方法,这些方法可以被远程客户端调用。

简答来说,就是 ASP.NET 提供的 Web 接口文件。
2、WebService 接口
我们可以 在ASMX 文件中创建 WebService 接口, 定义 Web 服务提供的具体功能。每个接口由一组公开的方法(即 Web 方法)组成,这些方法可以通过 HTTP 请求被调用。
以下是一个简单的 ASMX 文件示例:
using System.Web.Services;
namespace TestAsmxProject.Asmx
{
/// <summary>
/// Test 的摘要说明
/// </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 Test : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod(Description = "计算两个数的和")]
public int Add(int a, int b)
{
return a + b;
}
}
}

在上述示例中,HelloWorld 和 Add 是两个公开的 Web 方法,可以被客户端调用。
二、创建ASMX的WebService接口
1、创建 ASP.NET WebForms 项目
Visual Studio 2019 应用内新建项目,选择 ASP.NET Web应用程序(.NET Framework)。

项目名称起名为 TestAsmxProject,框架选择 .NET Framework 4.7.2。

选择 Web Forms,取消右侧 为 HTTPS 配置 的选项。

项目创建成功,目录如下:

我们点击上方 IIS Express 按钮,启动一下项目,看看是否能顺利运行。

启动成功。

2、创建 ASMX 接口程序
接着,我们创建 ASMX 文件。这里,我先创建了一个名为 Asmx 的文件夹,在文件夹里新建项。

添加新项 中选择 Web 服务 (ASMX),命名为 Test.asmx。

双击打开新建好的 Test.asmx,里面存在一个默认的 HelloWorld 方法。

我们在此基础上添加一个 Add 方法。

增加后,Test.asmx 代码如下:
using System.Web.Services;
namespace TestAsmxProject.Asmx
{
/// <summary>
/// Test 的摘要说明
/// </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 Test : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod(Description = "计算两个数的和")]
public int Add(int a, int b)
{
return a + b;
}
}
}
3、测试 ASMX 接口程序
我们重新启动项目,测试 Test.asmx 接口程序。
程序启动后,浏览器输入 http://localhost:52028/Asmx/Test.asmx,页面如下:

这个是 ASP.NET 自带的 ASMX 接口程序的调试页面。
我们先测试 HelloWorld 接口,点击 HelloWorld。

这是一个输入参数的页面,因为我们这个是无参方法,所以,直接点击调用。
返回的XML格式结果如下:
<string xmlns="http://tempuri.org/">Hello World</string>

下面,我们再来测试 Test.asmx 接口程序的有参方法 Add。
点击 Add,进入需要输入参数的页面。
输入测试参数 (比如我这里写的 a=1、b=2),点击调用。

返回的XML格式结果如下:
<int xmlns="http://tempuri.org/">3</int>

以上就是调试 ASMX 接口程序的基本方法,但是我们实际开发中,肯定是通过程序来调用,所以我们需要通过网络协议请求,下面是两种常用的网络协议请求的示例。
在允许外部系统调用该WEB服务之前,我们需要放开下面这行代码的注释:

三、HTTP 协议请求调用 WebService 接口
通过 HTTP 请求可以调用 Web 服务接口。使用工具(如浏览器、Postman 等)发送 HTTP 请求,并查看响应结果。以下是使用 Postman 调用 Add 方法的示例步骤:
- 打开 Postman,创建一个新的请求;
- 设置请求类型为 GET 或 POST;
- 输入 Web 服务的 URL,例如:http://localhost:52028/Asmx/Test.asmx/Add;
- 如果是 POST请求,在 Body 里需要填写参数,GET 填在 Params 里;
- 点击 Send 按钮发送请求,并查看响应结果;
示例请求:
POST /Asmx/Test.asmx/Add HTTP/1.1 Host: localhost:52028
示例参数:
{
"a": 1,
"b": 2
}
响应结果:
{
"d": 3
}
如图:

四、SOAP 协议请求调用 WebService 接口
SOAP 是一种基于 XML 的协议,用于在网络上交换结构化信息。通过 SOAP 请求,可以调用 Web 服务的公开方法。我们使用 SOAP协议 调用 Add 方法:
使用 Postman 发送 SOAP 请求的步骤:
- 打开 Postman,创建一个新的请求;
- 设置请求类型为 POST;
- 输入 Web 服务的 URL,例如:http://localhost:52028/Asmx/Test.asmx;
- 如果是 POST请求,在 Body 里需要填写 SOAP 格式的参数;
- 点击 Send 按钮发送请求,并查看响应结果;
示例请求:
POST /Asmx/Test.asmx HTTP/1.1 Host: localhost:52028 Content-Type: text/xml; charset=utf-8
示例参数:
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Add xmlns="http://tempuri.org/">
<a>3</a>
<b>5</b>
</Add>
</soap:Body>
</soap:Envelope>
响应结果:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<AddResponse xmlns="http://tempuri.org/">
<AddResult>3</AddResult>
</AddResponse>
</soap:Body>
</soap:Envelope>
如图:

五、ASMX文件功能和使用总结
我们通过以下表格来概述ASMX 文件的主要功能和使用方法:
说明 | |
---|---|
文件类型 | .asmx 文件 |
主要功能 | 提供基于 SOAP 协议的 Web 服务,允许不同平台和语言的系统进行通信。 |
协议 | SOAP(Simple Object Access Protocol) |
传输协议 | HTTP/HTTPS |
主要用途 | 创建跨平台、跨语言的数据和服务接口。 |
关键组件 | WebService 类、WebMethod 属性、SOAP 请求和响应。 |
调用工具 | Postman、浏览器、编程语言(如 C#、Java) |
调试方法 | 使用调试工具(如 Visual Studio 的断点调试、日志输出) |
安全性 | 可以通过 SoapExtension 实现 IP 拦截和其他安全措施。 |
ASMX 文件在 ASP.NET WebForms 中提供了创建 Web 服务的便捷方式,通过公开 Web 方法,允许远程客户端调用这些方法并获取数据。ASMX 文件支持标准的 SOAP 协议,可以通过 HTTP/HTTPS 进行数据传输,使其成为跨平台、跨语言系统集成的理想选择。
通过本文,我们介绍了 ASMX 文件的基本功能、如何定义 WebService 接口、通过 HTTP 和 SOAP 请求调用 WebService 接口,以及使用 Postman 进行测试的方法。掌握这些知识,可以帮助你在 ASP.NET WebForms 项目中更好地使用 ASMX 文件创建和调用 Web 服务。

Damon, Chinese, Liu Guangzhi, Software development engineer, CSDN quality creator, Ali Cloud expert blogger, Microsoft Technology Associate, Good at C#, Java, PHP, Python, etc, Love sports, Workaholic, Communist.