平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“.Net Core构建Webservice服务的实现方法步骤”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
从实现思路看,这个题目听起来怪怪的,毕竟既然都已经用上.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的完整代码如图所示。

落到代码里,点击启动项目,在浏览器中访问 (链接已移除)。出现下图的内容,说明一个轻松的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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!