日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
.Net之SoapCore簡單使用

最近在工作中,需要同時(shí)放出來WebAPI接口和支持Soap協(xié)議的WebService接口,在dotNetFramework時(shí)候玩過WebService,這可是好久沒再碰過了,沒想到現(xiàn)在居然遇到了。只好迎難而上。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了營口免費(fèi)建站歡迎大家使用!

介紹

本來是在ASP.NetCore中使用了組件SoapCore來使用Soap協(xié)議。

支持以下框架:

  • .NET 5.0(使用 ASP.NET Core 5.0)
  • .NET Core 3.1(使用 ASP.NET Core 3.1)
  • .NET Core 2.1(使用 ASP.NET Core 2.1)
  • .NET Standard 2.0(使用 ASP.NET Core 2.1)

官網(wǎng):https://github.com/DigDes/SoapCore

操作

準(zhǔn)備工作

為了省事,我還在之前的文章demo上面操作,地址是:https://gitee.com/AZRNG/my-example ,分支是:inmemory_soap ,當(dāng)前項(xiàng)目已經(jīng)包含一些WebAPI接口,我要實(shí)現(xiàn)使用Soap協(xié)議也放出這些接口,共用UserService類。

開始編寫接口

環(huán)境:dotnet5.0 + SoapCore 1.1.0.10

安裝組件

 
 
 
 
  1.  

ConfigureServices中注入SoapCore

 
 
 
 
  1. services.AddSoapCore(); 

新建User WebService

 
 
 
 
  1. ///  
  2. /// User WebService 
  3. ///  
  4. [ServiceContract] 
  5. public class UserContractImpl 
  6.     private readonly IUserService _userService; 
  7.     private readonly IMapper _mapper; 
  8.  
  9.     public UserContractImpl(IUserService userService, 
  10.         IMapper mapper) 
  11.     { 
  12.         _userService = userService; 
  13.         _mapper = mapper; 
  14.     } 
  15.  
  16.     ///  
  17.     /// 查詢用戶列表 
  18.     ///  
  19.     ///  
  20.     [OperationContract] 
  21.     public async Task> GetListAsync() 
  22.     { 
  23.         return await _userService.GetListAsync(); 
  24.     } 
  25.  
  26.     ///  
  27.     /// 查詢詳情 
  28.     ///  
  29.     ///  
  30.     ///  
  31.     [OperationContract] 
  32.     public async Task GetDetailsAsync(string id) 
  33.     { 
  34.         return await _userService.GetDetailsAsync(id); 
  35.     } 
  36.  
  37.     ///  
  38.     /// 添加 
  39.     ///  
  40.     ///  
  41.     ///  
  42.     [OperationContract] 
  43.     public async Task AddAsync(AddUserVm dto) 
  44.     { 
  45.         return await _userService.AddAsync(dto); 
  46.     } 
  47.  
  48.     ///  
  49.     /// 刪除 
  50.     ///  
  51.     ///  
  52.     [OperationContract] 
  53.     public async Task DeleteAsync(string id) 
  54.     { 
  55.         return  await _userService.DeleteAsync(id); 
  56.     } 

ConfigureServices中注入

 
 
 
 
  1. services.AddTransient(); 

Configure中配置終結(jié)點(diǎn)路由

 
 
 
 
  1. app.UseEndpoints(endpoints => 
  2.     endpoints.MapControllers(); 
  3.  
  4.     var binging = new BasicHttpBinding(); 
  5.     binging.ReaderQuotas.MaxStringContentLength = int.MaxValue; 
  6.     endpoints.UseSoapEndpoint("/UserContractImpl.asmx", binging, SoapSerializer.DataContractSerializer); 
  7. }); 

訪問地址:http://localhost:5000/UserContractImpl.asmx

WebApi程序客戶端

新建dotnet5.0項(xiàng)目

選中項(xiàng)目右鍵=>添加=>服務(wù)引用=>WCF Web Service

輸入url,點(diǎn)擊go出來服務(wù)

下一步

最后一直下一步直到完成

這個(gè)時(shí)候vs已經(jīng)幫我們生成了調(diào)用的方法,后期地址有變動(dòng)可以直接去修改這個(gè)代碼。

ConfigureServices中注冊

 
 
 
 
  1. services.AddSingleton(new UserContractImplClient(UserContractImplClient.EndpointConfiguration.BasicHttpBinding)); 

控制器注入

 
 
 
 
  1. private readonly UseService.UserContractImpl _userContractImpl; 
  2.  
  3. public HomeController( UseService.UserContractImpl userContractImpl) 
  4.     _userContractImpl = userContractImpl; 

使用里面的接口

 
 
 
 
  1. var result = await _userContractImpl.AddAsync(new UseService.AddUserVm 
  2.     Account = "123", 
  3.     PassWord = "456", 
  4.     Sex = UseService.SexEnum.Man 
  5. }); 
  6. var list = await _userContractImpl.GetListAsync(); 

通過先調(diào)用添加接口然后調(diào)用查詢接口可以查詢到我們剛才添加到的數(shù)據(jù)。

控制臺程序

向上面一樣將Soap服務(wù)引用到項(xiàng)目中

事例一:直接構(gòu)建UserContractImplClient

 
 
 
 
  1. var client = new UserContractImplClient(UserContractImplClient.EndpointConfiguration.BasicHttpBinding); 
  2. var str = await client.AddAsync(new AddUserVm 
  3.     Account = "23456", 
  4.     PassWord = "456", 
  5.     Sex = SexEnum.Noknow 
  6. }); 
  7. var list = client.GetListAsync(); 

事例二:

 
 
 
 
  1. // 創(chuàng)建 HTTP 綁定對象 
  2. var binding = new BasicHttpBinding(); 
  3. // 根據(jù) WebService 的 URL 構(gòu)建終端點(diǎn)對象 
  4. var endpoint = new EndpointAddress(@"http://localhost:5000/UserContractImpl.asmx"); 
  5. // 創(chuàng)建調(diào)用接口的工廠,注意這里泛型只能傳入接口 
  6. var factory = new ChannelFactory(binding, endpoint); 
  7. // 從工廠獲取具體的調(diào)用實(shí)例 
  8. var callClient = factory.CreateChannel(); 
  9. // 調(diào)用具體的方法,這里是 GetListAsync 方法。 
  10. var result = await callClient.GetListAsync(); 

參考文檔

https://github.com/DigDes/SoapCore


名稱欄目:.Net之SoapCore簡單使用
網(wǎng)址分享:http://www.dlmjj.cn/article/cdchosi.html