ASP.Net Core中的Web API不起作用

时间:2018-05-08 13:36:33

标签: c# asp.net asp.net-core asp.net-core-routing

我在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

我做错了什么?

1 个答案:

答案 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了解其他选项的详细信息。