热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【ASP.NET】创建第一个ASP.NETWebService程序

一.准备条件1.打开VisualStudio,并且准备创建一个.NETFramework的web网站。(ASP.NETCore不支持创建WebService)

一. 准备条件

1. 打开Visual Studio,并且准备创建一个.NET Framework的web网站。(ASP.NET Core不支持创建WebService)

二. 创建WebService实例

新建一个空的.NET Framework网站

 添加WebService类

WebService1.asmx的名字可以改成其它你想要的,这个文件名也就是最后webservice的网址名称。

 这里笔者取名为CalculartorWebService.asmx,并且内部代码为:

/// summary
/// Summary description for WebService1
/// /summary
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(COnformsTo= WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class CalculatorWebService : System.Web.Services.WebService
[WebMethod(Description = "Return the value a plus b")]
public int Add(int a, int b) {
return a + b;
[WebMethod(Description = "Return the value a minus b")]
public int Substract(int a, int b) {
return a - b;
}

被[WebMethod]属性所标记的方法会被视为公共web接口,可以被远程调用。

然后 Build 程序,Build成功后,启动程序。便可以看到创建的WebService程序。

 可以看出,WebService罗列出了所有的Web方法 和 方法的描述。你也可以点进每一个方法的内部查看详细的信息和运行测试数据。

 

除此之外,你也可以添加多个WebService,然后启动程序。

 

 

然后可以通过访问地址

http://localhost:57932/CalculatorWebService.asmx

http://localhost:57932/CarService.asmx

来查看上面定义的WebService接口。

三. 调用WebService数据

在创建完成WebService后,需要进行部署WebService服务。

 

这里笔者启动了第二个Visual Studio实例,并且创建了一个控制台应用程序。笔者将会用这个程序来调用上面创建的WebService数据。

添加服务引用

NameSpace你可以随便命名为你想要的,后面调用这个服务都会用到这个命名空间。

 

 点击Finish后,等待程序完成WebService的引用。在引用完成后,你就可以调用这个web服务了。笔者除了引用了http://localhost:57932/CalculatorWebService.asmx, 还引用了http://localhost:57932/CarService.asmx。成功添加引用后,会在你的Connected Services目录下显示你所添加的引用。

 

 

然后你就可以通过如下的代码的进行调用,注意,把命名空间和类名更换为你自己的名称。

//调用CalculatorService下的CalculatorWebServiceSoapCleint类下的Add方法
CalculatorService.CalculatorWebServiceSoapClient calculatorService = new CalculatorService.CalculatorWebServiceSoapClient(CalculatorService.CalculatorWebServiceSoapClient.EndpointConfiguration.CalculatorWebServiceSoap);
Console.WriteLine(calculatorService.AddAsync(1, 2).GetAwaiter().GetResult());
//调用CarService下的CarServiceSoapClient类下的GetBrand方法
CarService.CarServiceSoapClient carService = new CarService.CarServiceSoapClient(CarService.CarServiceSoapClient.EndpointConfiguration.CarServiceSoap);
Console.WriteLine(carService.GetBrandAsync().GetAwaiter().GetResult().Body.GetBrandResult);

输出结果

四. WebAPI和WebService的简单对比

webapi用的是http协议,

webservice用的是soap协议webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操作

 

soap 协议:它描述了一种在分散或分布式的环境中如何交换信息的轻量级协议。soap在http协议的基础上,一个基于XML的协议。

SOAP在HTTP协议的基础上,把编写成XML的REQUEST参数, 放在HTTP BODY上提交个WEB SERVICE服务器(SERVLET,ASP什么的) 处理完成后,结果也写成XML作为RESPONSE送回用户端, 为了使用户端和WEB SERVICE可以相互对应,可以使用WSDL作为这种通信方式的描述文件,利用WSDL工具可以自动生成WS和用户端的框架文件,SOAP具备把复杂对象序列化捆绑到XML里去的能力。

文章来源于https://www.cnblogs.com/HDK2016/p/15394358.html


推荐阅读
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 本文记录了作者对x265开源代码的实现与框架进行学习与探索的过程,包括x265的下载地址与参考资料,以及在Win7 32 bit PC、VS2010平台上的安装与配置步骤。 ... [详细]
  • ASP.NET&Spring.NET&NHibernate最佳实践(五)——第3章人事子系统(2)
    3.4.人事子系统服务层(Service)部门服务接口(IDeptService.cs)usingSystem;usingGuushuuse.SalaryPrj. ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 前言:关于跨域CORS1.没有跨域时,ajax默认是带cookie的2.跨域时,两种解决方案:1)服务器端在filter中配置详情:http:blog.csdn.netwzl002 ... [详细]
author-avatar
水水2502919973
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有