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
, посмотрите на этот блог для деталей других вариантов.