WebApi 中的默认 HTTP 动词是什么?获取还是发布?

now*_*ed. 3 .net c# http asp.net-web-api

只是古玩。我正在查看互联网上的一个网络项目。

而代码流程是这样的:

[RoutePrefix("/person")]
public class PersonController : ApiController
{

    //....
    [Route("/register")]
    public IHttpACtionResult RegisterPerson(PersonDto personDto)
    {
        //....
    }
    //....
}
Run Code Online (Sandbox Code Playgroud)

注意到上面的代码了吗?没有[HttpGet()][HttpPost()]指定。然而,上面的代码在GET调用时失败,但对POST调用有效。

任何想法如何解决此方法的 HTTP-Verb ?

注意:我知道如果方法名以GETor开头POST,则相应地通过HTTPGetor调用该方法HTTPPost。但是这里的方法名称以Register....

任何想法这是如何工作的?

Ros*_*bud 5

如果方法名称不匹配任何 HTTPVerb,则默认为 [HTTPPost]。

动作选择通过 ReflectedHttpActionDescriptor 类的 GetSupportedHttpMethods() 发生。

请参考以下链接中的代码:https : //aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Http/Controllers/ReflectedHttpActionDescriptor.cs

 if (supportedHttpMethods.Count == 0)
            {
                // Use POST as the default HttpMethod
                supportedHttpMethods.Add(HttpMethod.Post);
            }
Run Code Online (Sandbox Code Playgroud)