首页 > 解决方案 > 为什么 .net 核心 web api 方法需要 HttpMethodAttribute 映射到相应的请求类型 Get/put/post/delete

问题描述

我有 2 个项目

一个是在.NetFramework 4.8

WebAPi SampleController 控制器

namespace Samples.FrameWork.Mvc.Controllers
{
    public class SampleController : ApiController
    {
        // GET: api/Sample
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }
}

其他在 .NetCore 2.2

WebAPi SampleController 控制器

     namespace Samples.NetCore.WebApi.Controllers
     {
            [Route("api/[controller]")]
            [ApiController]
            public class SampleController : ControllerBase
            {
                // GET: api/Sample
                [HttpGet]
                public IEnumerable<string> Get()
                {
                    return new string[] { "value1", "value2" };
                }
            } 
  }

所以.. 在 Dot NetFrameWork 中,动作将根据名称执行

对于上面的例子有

方法名称为

  Get(){}
  Post(){}
  Put(){} 
  Delete(){}

当根据请求类型请求上述方法时,它将自动映射到相应的方法。

但是当涉及到 .net 核心 Web API 时,它也可以工作,但需要 HttpMethodAttribute 的帮助。

我的问题是为什么 .net 核心 Web API 方法在没有 HttpMethodAttribute 的情况下无法工作,因为它在 .net 框架中工作?

标签: asp.net-web-apiroutingasp.net-core-webapi

解决方案


推荐阅读