我开始使用ASP.NET Core MVC开发Web API。我一直在关注这个Microsoft教程:https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api
到目前为止,我已经为以下操作创建了代码:
代码:
[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错误:
我理解错误的含义,而不是为什么会发生错误。我错过了什么吗?
有趣的是,我可以访问创建应用程序时自动生成的API。但不是我手动添加的新内容。
答案 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]
我建议您遵循直到最后创建应用程序的准则,并在完成后运行它,以免出错。