Как я могу использовать сервис WebApi в MVC - PullRequest
0 голосов
/ 11 сентября 2018

Здесь я пытаюсь получить доступ к WebApi Сервису в Mvc, но я постоянно выдаю ошибку:

asSeverity Код Описание Ошибка строки файла проекта CS0029 Невозможно неявно преобразовать тип 'string' в 'System.Collections.Generic.IEnumerable '

    IEnumerable<MasterTab> resResult = result.Content.ReadAsStringAsync().Result;
 public ActionResult Index()
        {
            using(var client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:54040/Api/Marketing/");
                var responseTask = client.GetAsync("GetMarketing");
                responseTask.Wait();
                var result = responseTask.Result;
                if (result.IsSuccessStatusCode)
                {
                    IEnumerable<MasterTab> resResult = result.Content.ReadAsStringAsync().Result;
                }
                else
                {
                    students = Enumerable.Empty<MasterTab>();ModelState.AddModelError(string.Empty, "Server Error Please Conatct Admin");
                }
            }
            return View(students);
        }

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Нельзя приводить строку типа как тип MasterTab.Я предполагаю, что сервис WebApi возвращает данные в формате JSON.Попробуйте использовать Newtonsoft.Json для десериализации строкового ответа в коллекцию MasterTab.

https://www.newtonsoft.com/json

0 голосов
/ 11 сентября 2018

В любом случае, тогда мы можем позвонить на ApiController напрямую с вашего MVC контроллера:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var listOfFiles = new MarketingController().GetMarketing();

        return View(listOfFiles);
    }
}

Если у нас есть WebApi как другой проект в одном решении, мы можем вызвать его из MVC контроллера, как показано ниже:

public async Task<ActionResult> Index()
        {
            string apiUrl = "http://localhost:58764/api/Marketing/GetMarketing";

            using (HttpClient client=new HttpClient())
            {
                client.BaseAddress = new Uri(apiUrl);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage response = await client.GetAsync(apiUrl);
                if (response.IsSuccessStatusCode)
                {
                    var data = await response.Content.ReadAsStringAsync();
                    EntityType entity = Newtonsoft.Json.JsonConvert.DeserializeObject<EntityType>(data);

                }


            }
            return View();

        }
...