首页 > 解决方案 > WebAPI 异步任务通过模型

问题描述

这是我的控制器

public class TutorController : ApiController
{

    [Route("CreateTutor")]
    public async Task<IHttpActionResult> CreateTutor(TutorModel model)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }            

        return Ok();
    }
}

我正在使用 Fiddler 连接到它

POST http://localhost:12110/api/Tutor/CreateTutor

我已经设置了原始和应用程序/应用程序

在我的身体里

{
  "Name": "Test"
}

但我收到此错误 { "Message": "No HTTP resource was found that match the request URI ' http://localhost:12110/api/Tutor/CreateTutor '.", "MessageDetail": "No action was found on the与请求匹配的控制器'Tutor'。” }

知道我做错了什么吗?

标签: c#asp.net-web-apiroutingasp.net-web-api2

解决方案


API 控制器中的每个方法都必须有一个属性来确定它

您在方法中缺少 action 属性,例如例如。以下

[Route("api/[controller]")]
[ApiController]
public class TutorController : ApiController
{

    [HttpPost]
    [Route("CreateTutor")]
    public async Task<IHttpActionResult> CreateTutor(TutorModel model)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }            

        return Ok();
    }
}

在 MS 文档中阅读更多信息: https ://docs.microsoft.com/en-US/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2 #http 方法


推荐阅读