.Net Core构建Webservice服务的实现步骤
作者:qq_30377801
这个题目听起来怪怪的,毕竟既然都已经用上.Net Core了,干脆直接用API好了,为什么还要使用老旧的WebService呢?但既然能有这个题目,说明背后肯定有一些让人心酸的事情,比如说客户要求?又或者说业务要求?领导要求?甚至是对接第三方的小工程师要求?总之,形势比人强,我们还是来试试新瓶装旧酒吧。
经常用WebService的朋友们都知道,.Net Core是不能直接新建Webservice的,所以我们需要新建一个空的.Net Core模板,取名TestWebService。.Net 框架根据实际需要选择,建议是6.0以上,我这里选择的是8.0。

建好项目后,在nuget控制台或者管理界面,为项目添加SoapCore引用。

新建一个IMyWebService.cs。
using System.ServiceModel;
namespace TestWebService
{
[ServiceContract]
public interface IMyWebService
{
[OperationContract] // 声明这是一个服务操作(方法)
string HelloWorld(string name);
}
}新建一个MyWebService.cs。
namespace TestWebService
{
public class MyWebService : IMyWebService
{
public string HelloWorld(string name)
{
return $"Hello, {name}!";
}
}
}
修改Program.cs,在builder后面注册服务。
// 注册服务 builder.Services.AddSoapCore(); builder.Services.AddSingleton<IMyWebService, MyWebService>();
在app后面添加终结点。
app.UseRouting();
app.UseEndpoints(endpoints => {
endpoints.UseSoapEndpoint<IMyWebService>("/MyService.asmx", new SoapEncoderOptions(), SoapSerializer.XmlSerializer);
});项目的结构和program.cs的完整代码如图所示。

点击启动项目,在浏览器中访问 https://localhost:你的端口/MyService.asmx。出现下图的内容,说明一个简单的webService就制作完成了。

简单观察一下,发现绑定的是soap1.1协议。
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
但有的朋友实际用的是soap1.2协议。怎么办呢?非常简单,注册终结点的时候设置一下版本就可以了。
app.UseEndpoints(endpoints => {
endpoints.UseSoapEndpoint<IMyWebService>("/MyService.asmx", new SoapEncoderOptions { MessageVersion = System.ServiceModel.Channels.MessageVersion.Soap12WSAddressing10 }, SoapSerializer.XmlSerializer);
});再次启动刷新页面,会发现绑定了1.2协议。
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
再随便新建一个项目,添加服务引用,可以看到我们建的WebService终于被别人发现了,后续就可以将之前的业务挪过来啦~~

到此这篇关于.Net Core构建Webservice服务的实现步骤的文章就介绍到这了,更多相关.Net Core构建Webservice内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
