Im мигрировал мое приложение ASP.NET 4 в ядро ASP.NET. Большинство методов в моем API работают нормально, но странно некоторые не делают, и я не вижу причин.Контроллер не работает после перехода на ASP.NET Core 1
Я использую аутентификацию Owin.OAuth (OAuthAuthorizationServerProvider
) и для всех, кроме двух вызовов, свойство this.User
(from ControllerBase
) заполнено правильно. Для двух контроллеров это не работает!
Так что этот контроллер работает, точнее, в точке построения this.User не имеет значения null и содержит правильного пользователя для маркера Bearer.
[Authorize]
public class DriversController : AuthenticatedController
{
public DriversController() : base()
{
// this.User is none null!
}
[HttpGet]
[Route("api/drivers")]
public async Task<IActionResult> GetDrivers()
{
...
}
}
Этот контроллер не работает, когда конструктор попал, this.User
является нулевым
[Authorize]
public class DriversAssignmentController : AuthenticatedController
{
public DriversAssignmentController() : base()
{
// this.User is null!
}
[HttpGet]
[Route("api/driverassignment")]
public async Task<IActionResult> GetDriversAssignments()
{
...
}
}
Обратите внимание, что this.User
является собственностью на Microsoft.AspNetCore.Mvc.ControllerBase
которые AuthenticatedController
наследуется от.
Вы перепутали атрибут Route с HttpGet атрибут? – benjrb
Я изначально украсил его '[HttpGet]' и '[Route (" api/... ")]', и это не сработало. Я видел несколько примеров, которые просто использовали 'HttpGet', так что я решил попробовать. Это не имело значения :) – Chris