成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.Net之SoapCore簡單使用

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

[[423278]]

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

介紹

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

支持以下框架:

  • .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)

官網:https://github.com/DigDes/SoapCore

操作

準備工作

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

開始編寫接口

環境:dotnet5.0 + SoapCore 1.1.0.10

安裝組件

  1. <PackageReference Include="SoapCore" Version="1.1.0.10" /> 

ConfigureServices中注入SoapCore

  1. services.AddSoapCore(); 

新建User WebService

  1. /// <summary> 
  2. /// User WebService 
  3. /// </summary> 
  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.     /// <summary> 
  17.     /// 查詢用戶列表 
  18.     /// </summary> 
  19.     /// <returns></returns
  20.     [OperationContract] 
  21.     public async Task<List<User>> GetListAsync() 
  22.     { 
  23.         return await _userService.GetListAsync(); 
  24.     } 
  25.  
  26.     /// <summary> 
  27.     /// 查詢詳情 
  28.     /// </summary> 
  29.     /// <param name="id"></param> 
  30.     /// <returns></returns
  31.     [OperationContract] 
  32.     public async Task<User> GetDetailsAsync(string id) 
  33.     { 
  34.         return await _userService.GetDetailsAsync(id); 
  35.     } 
  36.  
  37.     /// <summary> 
  38.     /// 添加 
  39.     /// </summary> 
  40.     /// <param name="dto"></param> 
  41.     /// <returns></returns
  42.     [OperationContract] 
  43.     public async Task<string> AddAsync(AddUserVm dto) 
  44.     { 
  45.         return await _userService.AddAsync(dto); 
  46.     } 
  47.  
  48.     /// <summary> 
  49.     /// 刪除 
  50.     /// </summary> 
  51.     /// <param name="id"></param> 
  52.     [OperationContract] 
  53.     public async Task<int> 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>("/UserContractImpl.asmx", binging, SoapSerializer.DataContractSerializer); 
  7. }); 

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

WebApi程序客戶端

新建dotnet5.0項目

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

輸入url,點擊go出來服務

下一步

最后一直下一步直到完成

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

ConfigureServices中注冊

  1. services.AddSingleton<UserContractImpl>(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(); 

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

控制臺程序

向上面一樣將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. // 創建 HTTP 綁定對象 
  2. var binding = new BasicHttpBinding(); 
  3. // 根據 WebService 的 URL 構建終端點對象 
  4. var endpoint = new EndpointAddress(@"http://localhost:5000/UserContractImpl.asmx"); 
  5. // 創建調用接口的工廠,注意這里泛型只能傳入接口 
  6. var factory = new ChannelFactory<UserContractImplChannel>(binding, endpoint); 
  7. // 從工廠獲取具體的調用實例 
  8. var callClient = factory.CreateChannel(); 
  9. // 調用具體的方法,這里是 GetListAsync 方法。 
  10. var result = await callClient.GetListAsync(); 

參考文檔

 

https://github.com/DigDes/SoapCore

 

責任編輯:武曉燕 來源: 鵬祥
相關推薦

2021-06-08 09:28:12

.Net通知服務

2009-07-28 13:20:38

ASP.NET筆試題

2009-10-12 13:11:48

VB.NET使用線程

2021-06-07 08:07:39

.NETSDK操作

2010-06-01 18:03:05

Rsync 使用

2017-03-29 15:20:25

AndroidRootTools框架

2010-06-01 17:44:14

Rsync 使用

2009-10-30 15:51:30

VB.NET使用缺省屬

2021-05-14 07:20:07

.NetSwagger使用

2011-02-17 09:13:57

ASP.NET

2009-08-24 18:14:35

ASP.NET調試Log4net

2009-08-06 15:21:45

ASP.NET控件開發RenderConte

2009-11-13 10:31:07

ADO.NET Dat

2009-07-29 13:12:36

StringBuildASP.NET技巧

2009-12-21 14:55:49

ADO.NET類庫

2010-06-01 18:11:25

Rsync 使用

2009-09-11 11:30:53

Net60C#.NET

2009-10-16 13:26:53

VB.NET Exce

2014-06-30 15:10:32

2013-08-21 13:26:43

Objective-CNSDate說明
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: caoporn地址| 日本不卡一区二区三区在线观看 | 99re视频在线| 成年视频在线观看 | 一区二区视频在线 | 中文字幕综合 | 免费在线一区二区 | 午夜影院在线观看视频 | av免费网站在线观看 | 国产精品我不卡 | aaa国产大片 | 美女中文字幕视频 | 欧美日韩在线观看视频 | 亚洲国产成人一区二区 | 国产一区不卡 | 久综合| 欧美高清一区 | 草b视频| 国产欧美精品在线观看 | 国产精品久久久久久久免费观看 | 国产精品免费视频一区 | 天天干天天操天天射 | 亚洲视频一区二区三区四区 | 亚洲风情在线观看 | 国产精品久久久久久久久久免费看 | 在线观看亚洲精品视频 | 欧美日韩在线视频一区二区 | 欧美日韩亚洲一区 | 久久久久久国产 | 精品亚洲第一 | 男人的天堂中文字幕 | 亚洲综合一区二区三区 | www.三级| 日韩在线成人 | 免费国产视频在线观看 | 日韩在线电影 | 91嫩草精品 | 视频一区二区国产 | 毛片毛片毛片毛片毛片 | 黄色一级免费看 | 精品中文字幕一区二区 |