Мне нужно реализовать службу WCF, которая при вызове вызывает API отдыха. Например,Это интерфейс модели обслуживания
using System.ServiceModel;
namespace Calc
{
[ServiceContract]
public interface ICalcService
{
[OperationContract]
string getresponse(int id);
}
}
И это реализация
namespace Calc
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class CalcService: ICalcService
{
public string getresponse(int id)
{
//what I want to do is this
HttpClient http = new HttpClient();
string baseUrl = "https://restcountries.eu/rest/v2/name/";
string queryFilter = "?fields=name;capital;currencies";
Console.WriteLine("Enter your country name:");
string searchTerm = Console.ReadLine();
string url = baseUrl + searchTerm + queryFilter;
HttpResponseMessage response = await http.GetAsync(new Uri(url)).Result;
return response.ToString();
}
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что нам нужно использовать await при вызове API покоя. Но для этого нам нужно изменить метод «getresponse» на асинхронный, и это не работает, поскольку определение получено из интерфейса ICalcService. Я попытался изменить то же самое определение метода в интерфейсе, но это снова было запрещено.
Что может быть решением здесь?
Что я хочу, так это простой вызов моей службы WCFкоторый сам вызывает REST API, получает результат и возвращает вызываемому объекту.
Кто-нибудь может предложить какое-либо решение?