Проблема с параметром OData в ASP.Net Core 2.1 - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь заставить OData работать в ASP.Net 2.1.Основной Get в порядке, так как я получаю результаты из БД.

Когда я пытаюсь вызвать второй Get с параметром, он возвращается с 404. Я ставлю точку останова на втором get, и он никогда не срабатывает.Http "get" оператор http://localhost:5000/odata/userrole('Admin')

Application started. Press Ctrl+C to shut down.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:5000/odata/userrole('Admin')
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 423.7117ms 404

Что я тут не делаю?Спасибо.

Microsoft.AspNetCore.Odata = v7.1.0

namespace MyApp.Controllers
{
    public class UserRoleController : ODataController
    {

        private IMyDB _db;

        public UserRoleController(IMyDB db)
        {
            _db = db;
        }

        [EnableQuery(PageSize = 20)]
        public IActionResult Get()
        {
            return Ok(_db.UserRole().AsQueryable());
        }

        [EnableQuery]
        public IActionResult Get([FromODataUri] string roletype)
        {
            return Ok(_db.UserRole().Find(roletype));
        }
    }
}

1 Ответ

0 голосов
/ 28 декабря 2018

Я выяснил, в чем проблема.В будущем, если кто-то работает с OData, это может помочь в бесчисленных часах отладки.

Класс UserRole, который у меня есть, выглядит ниже. Обратите внимание аннотация данных [Ключ], то есть то, что заставляет OData игнорировать путь.Мне нужно изменить тип данных в соответствии с ключом класса UserRole public IActionResult Get([FromODataUri] Guid roleid) Это решает проблему.Надеюсь, что это поможет людям в будущем.

public class UserRole
{
   [Key]
   public Guid RoleId { get; set; }
   public Role RoleType { get; set; }
   public string RoleName { get; set; }
}
...