localhost上的Web API错误

时间:2017-03-26 01:45:41

标签: asp.net-web-api asp.net-web-api2 asp.net-core-mvc asp.net-core-webapi

我开始使用ASP.NET Core MVC开发Web API。我一直在关注这个Microsoft教程:https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api

到目前为止,我已经为以下操作创建了代码:

  • GET / api / todo
  • GET / api / todo / {id}

代码:

[Route("api/[controller]")]
public class TodoController : Controller
{
    private readonly ITodoRepository _todoRepository;

    public TodoController(ITodoRepository todoRepository)
    {
        _todoRepository = todoRepository;
    }

    // GET: api/values
    [HttpGet]
    public IEnumerable<TodoItem> GetAll()
    {
        return _todoRepository.GetAll();
    }

    // GET api/values/5
    [HttpGet("{id}", Name ="GetTodo")]
    public IActionResult GetById(long id)
    {
        var item = _todoRepository.Find(id);

        if(item == null)
        {
            return NotFound();
        }

        return new ObjectResult(item);
    }
}

但是,当我运行应用程序时,我收到以下500错误:

enter image description here

我理解错误的含义,而不是为什么会发生错误。我错过了什么吗?

有趣的是,我可以访问创建应用程序时自动生成的API。但不是我手动添加的新内容。

1 个答案:

答案 0 :(得分:0)

在“属性”-> launchSettings.json文件中更改设置。

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": {
      "applicationUrl": "http://localhost:49885",
      "sslPort": 44337
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/todo",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "TodoApi": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/todo",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

因为默认情况下“ lauchUrl”设置为“ api / values”,所以这就是您收到该错误的原因。 还要在您的Todo Controller中添加它,请参考文档以了解为什么要添加它。

namespace TodoApi.Controllers
{
    [Route("api/todo")]
    [ApiController]

我建议您遵循直到最后创建应用程序的准则,并在完成后运行它,以免出错。