Как использовать метод Web API Get в C # MVC - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь получить список сотрудников, используя метод Web API Get в C # MVC, и отобразить их в виде. Но мой список обнуляется. Я не уверен, что мне не хватает. Я имею в виду этот ресурс http://www.tutorialsteacher.com/webapi/consume-web-api-get-method-in-aspnet-mvc

Домашний контроллер:

 namespace Sample.Controllers
 {
    public class HomeController : Controller
  {
    private readonly EmployeeDBEntities _db = new EmployeeDBEntities();

    public ActionResult Index()
    {
        IEnumerable<Employee> employees = null;

        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:62141/api/");
            //HTTP GET
            var responseTask = client.GetAsync("employee");
            responseTask.Wait();

            var result = responseTask.Result;
            if (result.IsSuccessStatusCode)
            {
                var readTask = result.Content.ReadAsAsync<IList<Employee>>();
                readTask.Wait();

                employees = readTask.Result;
            }
            else //web api sent error response 
            {
                //log response status here..

                employees = Enumerable.Empty<Employee>();

                ModelState.AddModelError(string.Empty, "Server error. Please contact administrator.");
            }
        }
        return View(employees);
    }
 }
}

Контроллер API сотрудника:

namespace Sample.Controllers
{

public class EmployeeController : ApiController
{
    public IHttpActionResult GetAllEmployees()
    {
        IList<Employee> employees = null;

        using (var ctx = new EmployeeDBEntities())
        {
            employees = ctx.Employees.ToList<Employee>();
        }

        if (employees.Count == 0)
        {
            return NotFound();
        }

        return Ok(employees);
    }
  }

1 Ответ

0 голосов
/ 17 января 2019

Сначала вы должны проверить код статуса в своем ответе. Если это NotFound, то результатов не было (как ваш код сделан). Но ваша проблема может быть связана с тем, что результат ctx.Employees.ToList<Employee>(); удаляется и завершается до завершения ответа, но даже это может привести к исключению DisposedException. Вам следует рассмотреть возможность добавления объекта экземпляра контекста базы данных You в контейнер IoC с временным временем жизни, и метод inject создает зависимости для конструктора контроллера, потому что запрос не заканчивается, когда заканчивается метод действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...