Asp.net

僅 WCFclient 操作 Async .Net core 2.0

  • July 7, 2020

我在 asp.net core 2.0 中將 wcf 服務端點添加到連接的服務,然後我嘗試使用它,但是對於客戶端,只有以 ..async 結尾的功能

我不想使用 …async。但是沒有 .async 就沒有功能

這有什麼問題?我該怎麼辦?

而不是使用那個

var response = SystemClient.SearchCountriesAsync(....

我想用那個

var response = SystemClient.SearchCountries(...

但它給出了那個錯誤

錯誤 CS1061“SystemClient”不包含“SearchCountries”的定義,並且找不到接受“SystemClient”類型的第一個參數的擴展方法“SearchCountries”(您是否缺少 using 指令或程序集引用?)

在此處輸入圖像描述

您的客戶端沒有公開同步方法,但這對您來說應該不是問題。

而不是非同步呼叫該方法,只需執行以下操作:

response = SystemClient.SearchAirportsAsync(credentials, SystemHelperLanguageTypes.English, SystemHelperSearchTypes.CodeSearch, "ist").Result;

這將同步呼叫該方法,因為它會阻塞呼叫。在這裡查看 John Skeets 的答案。

話雖如此,我建議您使用提供的非同步方法。為了支持這一點,您必須將 Action 簽名更改為:

public async Task<IActionResullt> Index()
{
  SystemClient SystemClient = new SystemClient();
  Credential credential = new Credential();
  credential.UserName = "username";
  credential.UserPassword = "****";

  var response1 = await SystemClient.SearchCountriesAsync(credentials, SystemHelperLanguageTypes.English, SystemHelperSearchTypes.CodeSearch, "TR");
  var response = await SystemClient.SearchAirportsAsync(credentials, SystemHelperLanguageTypes.English, SystemHelperSearchTypes.CodeSearch, "ist");

  //Do whatever you do with those responses

  ViewBag.Language = "ar";
  return View();
}

引用自:https://stackoverflow.com/questions/47259297