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

时间:2010-09-08 22:29:16

标签: http asp.net-mvc-2 http-post http-get acceptverbs

如果我创建了一个控制器操作,并且没有使用AcceptVerbsHttpPostHttpGet来装饰它。什么是默认行为?

操作是否允许任何访问方法,还是默认为 GET

2 个答案:

答案 0 :(得分:15)

可通过任何动词访问。

答案 1 :(得分:4)

在Web API 2.1中:

取决于动作的名称。如果操作以“Get *”开头,则默认只接受GET请求。如果以“Put *”开头,则默认只接受PUT请求。与POST相同。

如果它没有以任何已知动词开头,那么它将默认只接受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"; }
}