日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

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

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

介紹

本來是在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

操作

準備工作

為了省事,我還在之前的文章demo上面操作,地址是:https://gitee.com/AZRNG/my-example ,分支是:inmemory_soap ,當前項目已經(jīng)包含一些WebAPI接口,我要實現(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中配置終結點路由

 
 
 
 
  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項目

選中項目右鍵=>添加=>服務引用=>WCF Web Service

輸入url,點擊go出來服務

下一步

最后一直下一步直到完成

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

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(); 

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

控制臺程序

向上面一樣將Soap服務引用到項目中

事例一:直接構建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 構建終端點對象 
  4. var endpoint = new EndpointAddress(@"http://localhost:5000/UserContractImpl.asmx"); 
  5. // 創(chuàng)建調用接口的工廠,注意這里泛型只能傳入接口 
  6. var factory = new ChannelFactory(binding, endpoint); 
  7. // 從工廠獲取具體的調用實例 
  8. var callClient = factory.CreateChannel(); 
  9. // 調用具體的方法,這里是 GetListAsync 方法。 
  10. var result = await callClient.GetListAsync(); 

參考文檔

https://github.com/DigDes/SoapCore


本文名稱:.Net之SoapCore簡單使用
URL地址:http://www.5511xx.com/article/cdchosi.html