У меня есть проблема в моем методе API. У меня есть метод GetDrones, который не работает должным образом (здесь нет адекватной логики. Я просто сделал его настолько коротким, насколько смог, чтобы упростить его) [путь 0]:
[Produces("application/json")]
[Route("api/[controller]")]
public class OwnersController : Controller
{
private readonly ApplicationDbContext _context;
private readonly ClaimsPrincipal _caller;
public OwnersController(ApplicationDbContext context, IHttpContextAccessor httpContextAccessor)
{
_context = context;
_caller = httpContextAccessor.HttpContext.User;
}
[HttpGet("GetOwnersDrones")]
public List<Drone> GetDrones()
{
var userId = _caller.Claims.Single(c => c.Type == "id");
var customer = _context.Customers.Single(c => c.Identity.Id == userId.Value);
var owner = _context.Owners.Single(o => o.CustomerId == customer.Id);
return _context.Drones.ToList();
}
}
Но если я поменяю метод таким образом [путь 1]:
[HttpGet("GetOwnersDrones")]
public List<Drone> GetDrones()
{
var userId = _caller.Claims.Single(c => c.Type == "id");
var customer = _context.Customers.Single(c => c.Identity.Id == userId.Value);
var owner = _context.Owners.Single(o => o.CustomerId == customer.Id);
return null;
}
Или так [путь 2]:
[HttpGet("GetOwnersDrones")]
public List<Drone> GetDrones()
{
var userId = _caller.Claims.Single(c => c.Type == "id");
var customer = _context.Customers.Single(c => c.Identity.Id == userId.Value);
//var owner = _context.Owners.Single(o => o.CustomerId == customer.Id);
return _context.Drones.ToList();
}
Оба работают (без ошибок появляется). Таким образом, я заключаю, что
_context.Drones.ToList();
и
_context.Owners.Single(o => o.CustomerId == customer.Id);
не работает, когда в одном методе? Как я могу решить эту проблему и заставить изначальный метод работать?
UPDATE
[HttpGet("GetOwnersDrones")]
public Owner GetOwnersDrones()
{
var userId = _caller.Claims.Single(c => c.Type == "id");
var customer = _context.Customers.Single(c => c.Identity.Id == userId.Value);
var owner = _context.Owners.SingleOrDefault(o => o.CustomerId == customer.Id);
return owner;
}
DEBUG
Я отлаживал через метод. Как видите, список drones
и owner
не пуст, но я получаю сообщение «Не удалось получить ответ»