Search code examples
asp.netwcfasynchronous.net-coreasp.net-core-2.0

WCFclient operation only Async .Net core 2.0


I added wcf services end point in asp.net core 2.0 to connected services and then I try to use that but with client there is only functions which ended with ..async

I don't want to use ...async.But there is no function without .async

What is problem with this?What should I do?

instead of using that

 var response = SystemClient.SearchCountriesAsync(....

I want to use that

 var response = SystemClient.SearchCountries(...

but it give that error

Error CS1061 'SystemClient' does not contain a definition for 'SearchCountries' and no extension method 'SearchCountries' accepting a first argument of type 'SystemClient' could be found (are you missing a using directive or an assembly reference?)

enter image description here


Solution

  • Your client does not expose synchronous method but that shouldn't be a problem for you.

    Instead of asynchronously calling the method just do this:

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

    This will call the method synchronously as it will block the call. Check John Skeets answer here.

    That being said I would recomend you use the async method that is provided. To support that you would have to change the Action signature to this:

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