.Net Core構(gòu)建Webservice服務(wù)的實(shí)現(xiàn)步驟
這個(gè)題目聽起來怪怪的,畢竟既然都已經(jīng)用上.Net Core了,干脆直接用API好了,為什么還要使用老舊的WebService呢?但既然能有這個(gè)題目,說明背后肯定有一些讓人心酸的事情,比如說客戶要求?又或者說業(yè)務(wù)要求?領(lǐng)導(dǎo)要求?甚至是對(duì)接第三方的小工程師要求?總之,形勢(shì)比人強(qiáng),我們還是來試試新瓶裝舊酒吧。
經(jīng)常用WebService的朋友們都知道,.Net Core是不能直接新建Webservice的,所以我們需要新建一個(gè)空的.Net Core模板,取名TestWebService。.Net 框架根據(jù)實(shí)際需要選擇,建議是6.0以上,我這里選擇的是8.0。

建好項(xiàng)目后,在nuget控制臺(tái)或者管理界面,為項(xiàng)目添加SoapCore引用。

新建一個(gè)IMyWebService.cs。
using System.ServiceModel;
namespace TestWebService
{
[ServiceContract]
public interface IMyWebService
{
[OperationContract] // 聲明這是一個(gè)服務(wù)操作(方法)
string HelloWorld(string name);
}
}新建一個(gè)MyWebService.cs。
namespace TestWebService
{
public class MyWebService : IMyWebService
{
public string HelloWorld(string name)
{
return $"Hello, {name}!";
}
}
}
修改Program.cs,在builder后面注冊(cè)服務(wù)。
// 注冊(cè)服務(wù) builder.Services.AddSoapCore(); builder.Services.AddSingleton<IMyWebService, MyWebService>();
在app后面添加終結(jié)點(diǎn)。
app.UseRouting();
app.UseEndpoints(endpoints => {
endpoints.UseSoapEndpoint<IMyWebService>("/MyService.asmx", new SoapEncoderOptions(), SoapSerializer.XmlSerializer);
});項(xiàng)目的結(jié)構(gòu)和program.cs的完整代碼如圖所示。

點(diǎn)擊啟動(dòng)項(xiàng)目,在瀏覽器中訪問 https://localhost:你的端口/MyService.asmx。出現(xiàn)下圖的內(nèi)容,說明一個(gè)簡(jiǎn)單的webService就制作完成了。

簡(jiǎn)單觀察一下,發(fā)現(xiàn)綁定的是soap1.1協(xié)議。
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
但有的朋友實(shí)際用的是soap1.2協(xié)議。怎么辦呢?非常簡(jiǎn)單,注冊(cè)終結(jié)點(diǎn)的時(shí)候設(shè)置一下版本就可以了。
app.UseEndpoints(endpoints => {
endpoints.UseSoapEndpoint<IMyWebService>("/MyService.asmx", new SoapEncoderOptions { MessageVersion = System.ServiceModel.Channels.MessageVersion.Soap12WSAddressing10 }, SoapSerializer.XmlSerializer);
});再次啟動(dòng)刷新頁(yè)面,會(huì)發(fā)現(xiàn)綁定了1.2協(xié)議。
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
再隨便新建一個(gè)項(xiàng)目,添加服務(wù)引用,可以看到我們建的WebService終于被別人發(fā)現(xiàn)了,后續(xù)就可以將之前的業(yè)務(wù)挪過來啦~~

到此這篇關(guān)于.Net Core構(gòu)建Webservice服務(wù)的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān).Net Core構(gòu)建Webservice內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET中Session和Cache的區(qū)別總結(jié)
這篇文章主要介紹了ASP.NET中Session和Cache的區(qū)別總結(jié),本文結(jié)合使用經(jīng)驗(yàn),總結(jié)出了5點(diǎn)Session緩存和Cache緩存的區(qū)別,需要的朋友可以參考下2015-06-06
VS2010、VS2008等項(xiàng)目的默認(rèn)瀏覽器修改方法(圖文)
默認(rèn)情況下,VS會(huì)使用操作系統(tǒng)的默認(rèn)瀏覽器,但我在調(diào)試 ASP.NET 程序時(shí)更偏向于使用IE瀏覽器,下面與大家分享下VS2010、VS2008等項(xiàng)目的默認(rèn)瀏覽器的修改方法2013-05-05
c# 連接字符串?dāng)?shù)據(jù)庫(kù)服務(wù)器端口號(hào) .net狀態(tài)服務(wù)器端口號(hào)
正常的數(shù)據(jù)庫(kù)連接字符串配置,這是在MSSQL服務(wù)器端口是1433(默認(rèn))的情況下。2009-06-06
asp.net中幾種常用的身份驗(yàn)證方法總結(jié)
本篇文章小編就為大家介紹一下在asp.net中幾種常用的身份驗(yàn)證方法。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-11-11
ASP.NET中用js取CheckBoxList中值的方法實(shí)例
用腳本取CheckBoxList中的值,并用"|"將其分開,之后將取到的值放入文本框,返回?cái)?shù)據(jù)庫(kù)做添加或者修改2013-07-07
ASP.NET MVC實(shí)現(xiàn)圖片上傳、圖片預(yù)覽顯示
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC實(shí)現(xiàn)圖片上傳、圖片預(yù)覽顯示的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05

