当前位置: 代码网 > it编程>编程语言>Asp.net > C#进阶-ASP.NET WebForms调用ASMX的WebService接口

C#进阶-ASP.NET WebForms调用ASMX的WebService接口

2024年08月02日 Asp.net 我要评论
ASMX 文件在 ASP.NET WebForms 中提供了创建 Web 服务的便捷方式,通过公开 Web 方法,允许远程客户端调用这些方法并获取数据。本文介绍了 ASMX 文件的基本功能、如何定义 WebService 接口、通过 HTTP 和 SOAP 请求调用 WebService 接口,以及使用 Postman 进行测试的方法。掌握这些知识,可以帮助你在 ASP.NET WebForms 项目中更好地使用 ASMX 文件创建和调用 Web 服务。

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 方法的示例步骤:

  1. 打开 postman,创建一个新的请求;
  2. 设置请求类型为 get 或 post;
  3. 输入 web 服务的 url,例如:http://localhost:52028/asmx/test.asmx/add;
  4. 如果是 post请求,在 body 里需要填写参数,get 填在 params 里;
  5. 点击 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 请求的步骤:

  1. 打开 postman,创建一个新的请求;
  2. 设置请求类型为 post;
  3. 输入 web 服务的 url,例如:http://localhost:52028/asmx/test.asmx;
  4. 如果是 post请求,在 body 里需要填写 soap 格式的参数;
  5. 点击 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 服务。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com