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);
}
-
测试
分类:
net / webapi
标签:
WebService
, RPC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?