webapi创建WCF WebService+WCF WebService远程服务调用
首先需要引入soapcore包

这个包提供了所需的类和soap终结点中间件。
引入这个这个包之后,我们需要定义提供的服务。
这里我写了一个用于查询省份面积的服务。
省份信息服务
/// <summary>
/// 省份信息服务接口
/// </summary>
[ServiceContract]
public interface IProvinceInfoService
{
/// <summary>
/// 获取省份面积
/// </summary>
/// <param name="provinceName"></param>
/// <returns></returns>
[OperationContract]
ProvinceResult GetProvinceInfo(string provinceName);
}
/// <summary>
/// 省份信息服务实现
/// </summary>
public class ProvinceInfoService : IProvinceInfoService
{
public ProvinceResult GetProvinceInfo(string provinceName)
{
if (string.IsNullOrEmpty(provinceName))
{
return new ProvinceResult();
}
else
{
switch (provinceName)
{
case "四川":
return new ProvinceResult() { Name= provinceName,Area=48.14m };
case "新疆":
return new ProvinceResult() { Name = provinceName, Area = 166 };
default:
return new ProvinceResult() { Name = provinceName};
}
}
}
}
/// <summary>
/// 实体类
/// </summary>
[DataContract]
public class ProvinceResult
{
[DataMember]
public string Name { get; set; }
[DataMember]
public decimal Area { get; set; }
}
定义服务之后在web主机中注册服务
//添加webService服务
builder.Services.AddSingleton<IProvinceInfoService, ProvinceInfoService>();
//添加webservice服务终结点,当请求的资源在控制器中路由不到时会路由到这里
app.UseSoapEndpoint<IProvinceInfoService>("/ProvinceInfoService", new SoapEncoderOptions());
现在WebService就创建好了,实在是很简单。只是soapcore没有提供测试页面,而netFramework用.asmx写的服务不加后面的路径时,返回的是一个HTML测试页面,很方便。soapcore就没有搞这个了,默认是返回WSDL文件。
测试服务
WSDL文件测试

服务方法测试

添加WebService服务引用
为了方便测试,我把项目发布了一下,然后把发布了的项目exe运行了起来。在解决方案中再添加正在运行的项目里面那个WebService。
有两种方法添加服务引用
- 第一种是在项目上右键选择添加->服务引用,选择WCF那一项

- 第二种方式是双击项目下面的Connected Service,然后选择连接的服务,在服务引用那一栏点+号。仍然会弹出同样的界面
选择下一步后,出现弹窗

- 填上服务的地址后点击转到。
- 点击浏览,选择别人给的WSDL文件
这两种方式都可以
然后可以改一下自己认为合适的命名空间,我改为了ProvinceServiceReference
然后一路下一步就行
使用WebService
使用方式和普通的实例方法调用一样,我把它写到控制器Action中
[HttpGet]
[AllowAnonymous]
public async Task<object> GetProvinceService(string provinceName)
{
ProvinceInfoServiceClient client = new ProvinceInfoServiceClient();
return await client.GetProvinceInfoAsync(provinceName);
}
测试

webapi创建WCF WebService+WCF WebService远程服务调用的更多相关文章
- Webservice WCF WebApi 前端数据可视化 前端数据可视化 C# asp.net PhoneGap html5 C# Where 网站分布式开发简介 EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下? SQL Server之深入理解STUFF 你必须知道的EntityFramework 6.x和EntityFramework Cor
Webservice WCF WebApi 注明:改编加组合 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下, ...
- 关于通信的关键词UDP/(TCP/IP)/IPC/RPC/.NET Remoting/WebService/WCF/Http 系列
OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行实践: ...
- .Net remoting, Webservice,WCF,Socket区别
传统上,我们把计算机后台程序(Daemon)提供的功能,称为"服务"(service).比如,让一个杀毒软件在后台运行,它会自动监控系统,那么这种自动监控就是一个"服务& ...
- WCF常见问题(1) -- WebService/WCF Session Cookie
原文:WCF常见问题(1) -- WebService/WCF Session Cookie 在.net 3.0推出WCF之前使用的WebService,有的应用有使用Session保持一些信息,在不 ...
- 使用vs2010创建、发布、部署、调用 WebService
原文地址:使用vs2010创建.发布.部署.调用 WebService作者:吴超 一 使用vs2010创建 WebService 1 打开VS2010,菜单 文件->新建->项目2 ...
- 如何创建一个AJAX-Enabled WCF Service
原创地址:http://www.cnblogs.com/jfzhu/p/4041638.html 转载请注明出处 前面的文章中介绍过<Step by Step 创建一个WCF Servi ...
- WebService学习总结(四)——调用第三方提供的webService服务
http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...
- CXF发布webService服务以及客户端调用
这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...
- WCF学习系列一_创建第一个WCF服务
原创作者:灰灰虫的家http://hi.baidu.com/grayworm WCF开发实战系列一:创建第一个WCF服务 在这个实战中我们将使用DataContract,ServiceContract ...
- [置顶]
Java WebService接口生成和调用 图文详解
webservice简介: Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间 ...
随机推荐
- 直播预告丨OpenHarmony标准系统多媒体子系统之视频解读
5月19日(周四)晚上19点,OpenHarmony开源开发者成长计划知识赋能第五期"掌握OpenHarmony多媒体的框架原理"的第五节直播课,即将开播! 深开鸿资深技术专家胡浩 ...
- Git 分支管理:优化版本控制与应急处理的关键策略
使用 Git 分支:轻松管理不同版本和应对紧急情况的最佳实践 使用 Git 分支 在 Git 中,分支是主仓库的新/独立版本. 假设你有一个大型项目,需要对其进行设计更新. 没有使用 Git 时: 复 ...
- Numpy数组拼接和分裂
将多个数组合并成一个,或将一个数组分裂成多个. 数组拼接 concatenate([a1, a2, ...], axis=0, out=None) #默认沿axis = 0轴拼接,也可设置沿axis ...
- vue3 快速入门系列 —— vue3 路由
vue3 快速入门系列 - vue3 路由 在vue3 基础上加入路由. vue3 需要使用 vue-router V4,相对于 v3,大部分的 Vue Router API 都没有变化. Tip:不 ...
- Tailscale 的 TLS 证书过期,网站挂了 90 分钟!
3月7日,基于 WireGuard 的知名 VPN 厂商 Tailscale 的官方网站 tailscale.com 因 TLS 证书过期而中断服务约90分钟. 虽然影响有限,但这起事件还是在 Hac ...
- 算法小白刷了一周 LeetCode 后的思考
Hi,我是 itchao 我自己工作有 2 两年多的前端开发经验,但是数据结构与算法一直不好,基本就是一个算法小白的水平. 听说大公司面试都要手写算法题,最近为了以后能去更好的公司,然后其实心里比较着 ...
- k8s 深入篇———— 编排[八]
前言 简单整理一下编排. 正文 一个deployment 例子: apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployme ...
- js 实现双指缩放
前言随着智能手机.平板电脑等触控设备的普及,交互方式也发生了改变.相对于使用鼠标和键盘进行交互的电脑,触控设备可以直接使用手指进行交互,而且基本上都支持多点触控.多点触控最常见的操作莫过于双指缩放了. ...
- 前端直接获取用户IP的方法
前端直接获取用户IP的方法 简单来说就是使用两个接口 一个是太平洋网 <script src="//whois.pconline.com.cn/ipJson.jsp?callback= ...
- Go Mysql Driver 集成 Seata-Golang 解决分布式事务问题
简介: 2020 年 4 月,我们开始尝试实现 go 语言的分布式事务框架 Seata-Golang.众所周知,Seata AT 模式以无业务代码侵入的特点,被广大开发者推崇.Java 版 Seata ...