我在visual studio中创建了一个Web API项目。我添加了一个控制器,它是:
[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
。
我做错了什么?
答案 0 :(得分:0)
它无法解析我的构造函数中的服务。在这 情况下,控制器甚至没有构建?
如果构造函数依赖于注入的服务,则必须在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
生命周期的一种方法。请查看this blog了解其他选项的详细信息。