Web API в ASP.Net Core не работает

Я создал проект веб-API в visual studio. Я добавил контроллер, который:

[Route("api/[controller]")]
public class AccountController : Controller

с функцией:

[HttpGet("{id}")]
public IActionResult Test(Int32 id)
{
    return StatusCode(StatusCodes.Status500InternalServerError);
}

Я установил в нем точку останова, чтобы проверить, была ли она вызвана или нет. Я проверил это с почтальоном. Я отправил запрос GET:

GET http://localhost:xxxxx/api/Account/1. 

Ничего не случилось. я добавил app.UseMvc(); в Startup.Configure,

Что я делаю неправильно?

1 ответ

Решение

Не удалось разрешить службу, которая есть в моем конструкторе. В этом случае контроллер даже не построен?

Если ваш конструктор зависит от службы, внедряемой в него, то он должен быть зарегистрирован в startup.cs для внедрения зависимостей ASP.NET, чтобы перейти к вашему конструктору.

Например:

MyService.cs

public class MyService
{
...
}

MyController.cs

public class MyController : Controller
{
    public MyController(MyService myService)
    {
        ...
    }
}

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddTransient<MyService>();
    ...
}

Как только вы добавили свой сервис в IServiceCollection в ConfigureServices метод в Startup.cs тогда ASP.NET сможет создать ваш контроллер.

НОТА:AddTransient это только один способ указать время жизни MyService, посмотрите на этот блог для деталей других вариантов.

Другие вопросы по тегам