В web api get action call, readasasync() показывает system.missingmethodexception: 'метод не найден: 'system.threading.tasks.task`1<! ! 0> exeption
В моем проекте, я звоню в службу веб-API - получить действие от регулятора очередного проекта. Мой код таков:
using System.Net.Http; using System.Configuration; using System.Net.Http.Headers;
public ActionResult Index() { ViewBag.Place = new SelectList(GetPlaces(), "ID", "PlaceName"); FlightDetails flightDetails = new FlightDetails(); flightDetails.DepartureDate = System.DateTime.Now; flightDetails.ReturnDate = System.DateTime.Now; return View(flightDetails); }
private List<tblPlace> GetPlaces() { List<tblPlace> lstPlaces = new List<tblPlace>(); //to be uncommented //lstPlaces = TwentyFour7Sewa.Utils.APIEngine<tblPlace>.GetAll("api/fromto"); using (var client = new HttpClient()) { string apiHost = ConfigurationManager.AppSettings["ApiHost"]; string apiDirectory = "api/fromto"; List<tblPlace> result = new List<tblPlace>(); client.BaseAddress = new Uri(apiHost); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = client.GetAsync(apiDirectory).Result; if (response.IsSuccessStatusCode) { result = response.Content.ReadAsAsync<List<tblPlace>>().Result; return result; } else { return null; } } //lstPlaces = lstPlaces.OrderBy(o => o.PlaceName).ToList<tblPlace>(); //return lstPlaces; }
Однако, в соответствии
ViewBag.Place = new SelectList(GetPlaces(), "ID", "PlaceName");в Index() actionresult я получаю ошибку,
System.MissingMethodException: 'Method not found: 'System.Threading.Tasks.Task`1<!!0> System.Net.Http.HttpContentExtensions.ReadAsAsync(System.Net.Http.HttpContent)'.'
Web api возвращает требуемое значение. Проблема заключается в линии
ReadAsAsyncЯ ничего не делал в этой части кода. До вчерашнего дня все шло нормально. Что случилось вдруг, я понятия не имею.
Что я уже пробовал:
Нашел где-то, что мне нужно использовать Microsoft.Net.Http вместо System.Net.Http, так как это устарело. Когда я установил
Microsoft.Net.Httpиз пакета nuget в этом проекте эта библиотека dll не была показана в справочнике проекта.
Bryian Tan
Вы пробовали преобразовать этот метод в асинхронный?
Codes DeCodes
Да, сделал это. Но то же самое исключение..
задача публичных статических асинхронных&ЛТ;список<tblusertype&ГТ;&ГТ; способность()
{
строка apiHost = ConfigurationManager.AppSettings["ApiHost"];
использование (var client = new HttpClient())
{
Список<tblusertype&ГТ; результат = новый список<tblusertype&ГТ;();
клиент.BaseAddress = новый Uri(apiHost);
клиент.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = ожидание клиента.GetAsync("api/UserType");
если (ответ.IsSuccessStatusCode)
{
результат = реакция.Содержание.ReadAsAsync<List<tblusertype>>().результат;
//return Task.FromResult<tblusertype>(результат);
возвращать null;
}
еще
{
возвращать null;
}
}
}