.Net Core构建Webservice服务的实现步骤
<p>这个题目听起来怪怪的,毕竟既然都已经用上.Net Core了,干脆直接用API好了,为什么还要使用老旧的WebService呢?但既然能有这个题目,说明背后肯定有一些让人心酸的事情,比如说客户要求?又或者说业务要求?领导要求?甚至是对接第三方的小工程师要求?总之,形势比人强,我们还是来试试新瓶装旧酒吧。</p><p>经常用WebService的朋友们都知道,.Net Core是不能直接新建Webservice的,所以我们需要新建一个空的.Net Core模板,取名TestWebService。.Net 框架根据实际需要选择,建议是6.0以上,我这里选择的是8.0。</p>
<p style="text-align:center"><img alt="" height="784" src="https://img.jbzj.com/file_images/article/202601/2026010511211476.jpg" width="1200" /></p>
<p>建好项目后,在nuget控制台或者管理界面,为项目添加SoapCore引用。</p>
<p style="text-align:center"><img alt="" height="521" src="https://img.jbzj.com/file_images/article/202601/2026010511211449.jpg" width="1200" /></p>
<p>新建一个IMyWebService.cs。</p>
<div class="jb51code"><pre class="brush:csharp;">using System.ServiceModel;
namespace TestWebService
{
public interface IMyWebService
{
// 声明这是一个服务操作(方法)
string HelloWorld(string name);
}
}</pre></div>
<p>新建一个MyWebService.cs。</p>
<div class="jb51code"><pre class="brush:csharp;">namespace TestWebService
{
public class MyWebService : IMyWebService
{
public string HelloWorld(string name)
{
return $"Hello, {name}!";
}
}
}
</pre></div>
<p>修改Program.cs,在builder后面注册服务。</p>
<div class="jb51code"><pre class="brush:csharp;">// 注册服务
builder.Services.AddSoapCore();
builder.Services.AddSingleton<IMyWebService, MyWebService>();</pre></div>
<p>在app后面添加终结点。</p>
<div class="jb51code"><pre class="brush:csharp;">app.UseRouting();
app.UseEndpoints(endpoints => {
endpoints.UseSoapEndpoint<IMyWebService>("/MyService.asmx", new SoapEncoderOptions(), SoapSerializer.XmlSerializer);
});</pre></div>
<p>项目的结构和program.cs的完整代码如图所示。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202601/2026010511211422.png" /></p>
<p>点击启动项目,在浏览器中访问 https://localhost:你的端口/MyService.asmx。出现下图的内容,说明一个简单的webService就制作完成了。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202601/2026010511211466.png" /></p>
<p>简单观察一下,发现绑定的是soap1.1协议。</p>
<div class="jb51code"><pre class="brush:xml;"><soap:binding transport="http://schemas.xmlsoap.org/soap/http"/></pre></div>
<p>但有的朋友实际用的是soap1.2协议。怎么办呢?非常简单,注册终结点的时候设置一下版本就可以了。</p>
<div class="jb51code"><pre class="brush:csharp;">app.UseEndpoints(endpoints => {
endpoints.UseSoapEndpoint<IMyWebService>("/MyService.asmx", new SoapEncoderOptions { MessageVersion = System.ServiceModel.Channels.MessageVersion.Soap12WSAddressing10 }, SoapSerializer.XmlSerializer);
});</pre></div>
<p>再次启动刷新页面,会发现绑定了1.2协议。</p>
<div class="jb51code"><pre class="brush:xml;"><soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/></pre></div>
<p>再随便新建一个项目,添加服务引用,可以看到我们建的WebService终于被别人发现了,后续就可以将之前的业务挪过来啦~~</p>
<p style="text-align:center"><img alt="" height="831" src="https://img.jbzj.com/file_images/article/202601/2026010511211483.jpg" width="1200" /></p>
頁:
[1]