以前搭建的webservice 都是基于.NET fromwork的,我们知道.NET fromwork是非跨平台的,只能部署在iis上,今天教大家用.NET core搭建一个可跨平台的Web Service
新建一个.net core空项目
给项目起一个名字
选一个.net框架,我这里选择的是 .NET 5,也可以选择.NET 6 7... 都是一样的
.NET 5会生成一个Startup类,.NET 6以上版本已经把Startup类取消了,直接把相关服务写在Program里面就行
依赖项 添加 NuGet程序包,搜索 soapcore 安装
在Service文件夹下添加一个接口和一个实现类
IContract:
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Threading.Tasks;namespace WebServiceDemo.Service.Interface
{[ServiceContract]interface IDemoService{[OperationContract]int Add(string a, string b);}
}
DemoService:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WebServiceDemo.Service.Interface;namespace WebServiceDemo.Service
{public class DemoService : IDemoService{public int Add(string a, string b){return Convert.ToInt32(a) + Convert.ToInt32(b);}}
}
Startup下添加如下代码,注入刚才的类作为单例服务模式,同时添加soapcore服务
public void ConfigureServices(IServiceCollection services){services.TryAddSingleton<IDemoService, DemoService>();services.AddSoapCore();}// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseRouting();app.UseEndpoints(endpoints =>{endpoints.MapGet("/", async context =>{await context.Response.WriteAsync("Hello World!");});endpoints.UseSoapEndpoint<IDemoService>("/Service.asmx", new SoapEncoderOptions(),SoapSerializer.DataContractSerializer);});}
启动项目,可以看到已经成功运行了webservice
用postman测试一下,测试成功!
打包发布到服务器
右键 》发布》 选择文件夹
将发布好的文件全部拷贝到对应服务器下
windows服务器的话运行WebServiceDemo.exe就行,linux的话运行WebServiceDemo.dll文件
或者指定端口号运行: