未标记AcceptVerbs、HttpGet或HttpPost的控制器操作的默认行为是什么?

未标记AcceptVerbs、HttpGet或HttpPost的控制器操作的默认行为是什么?,http,asp.net-mvc-2,http-post,http-get,acceptverbs,Http,Asp.net Mvc 2,Http Post,Http Get,Acceptverbs,如果我创建了一个控制器动作,并且没有用AcceptVerbs、HttpPost或HttpGet来修饰它。默认行为是什么 该操作是否允许任何访问方法,或者是否默认为获取?可以通过任何动词访问该操作。在Web API 2.1中: 这取决于动作的名称。如果操作以“Get*”开头,那么它将默认只接受Get请求。如果它以“Put*”开头,那么它将默认只接受Put请求。波斯特也一样 如果它不以任何已知动词开头,那么它将默认为只接受POST 以下是我的测试结果: public class BlahContro

如果我创建了一个控制器动作,并且没有用
AcceptVerbs
HttpPost
HttpGet
来修饰它。默认行为是什么


该操作是否允许任何访问方法,或者是否默认为获取?

可以通过任何动词访问该操作。

在Web API 2.1中: 这取决于动作的名称。如果操作以“Get*”开头,那么它将默认只接受Get请求。如果它以“Put*”开头,那么它将默认只接受Put请求。波斯特也一样

如果它不以任何已知动词开头,那么它将默认为只接受POST

以下是我的测试结果:

public class BlahController : ApiController
{
    // only allows GET
    public string GetSomething() { return "GetSomething blah"; }

    // only allows PUT
    public string PutSomething() { return "PutSomething blah"; }

    // only allows POST
    public string PostSomething() { return "PostSomething blah"; }

    // only allows POST
    public string Fleabag() { return "Fleabag blah"; }
}

这很奇怪,因为我刚刚收到:“请求的资源不支持没有属性的操作的http方法‘GET’”(在WebApi 2.2中测试)。请尝试使用不同于“GET()”或“Post()”或“GetById()”的操作方法来测试它,因为在这些情况下,如果没有可接受的动词属性,http方法将从名称自动解析。与我的回答相反,如果方法名称以“Get”开头,那么它将默认只接受Get请求。否则它默认接受任何动词。我用Dummy()action/method测试过,它只接受POST。你试过了吗?我也得出了同样的结论。如果有一份包含这些信息的官方文档就好了。@marcind测试了它,它的工作原理与您的回答一样。如果能有一些官方文件的链接来说明这一点,那就太好了。