为什么Post工作,但不是Get,使用相同的路线和args?

时间:2015-12-31 20:03:53

标签: c# post controller get asp.net-web-api-routing

我有以下控制器代码:

namespace PlatypusReports.Controllers
{
    [RoutePrefix("api/platypus")]
    public class PlatypusController : ApiController
    {
        [Route("{unit}/{begindate}")]
        [HttpPost]
        public void Post(string unit, string begindate)
        {
            . . .
        }

        [Route("{unit}/{begindate}")]
        [HttpGet]
        public string Get(string unit, string begindate)
        {
            . . .
        }
        . . .         

调用POST方法有效,但调用GET方法不行;在后一种情况下,我得到“405方法不允许 - 请求的资源不支持http方法'GET'。”

我用Postman的相同网址称呼他们:

http://localhost:52194/api/platypus/poisontoe/201509

...唯一的区别是我选择“POST”它可以工作,当我选择“GET”它没有。

为什么POST会工作而不是GET?我需要在GET代码中更改哪些内容才能获得支持/允许?

1 个答案:

答案 0 :(得分:1)

如果您使用的是apicontroller,则不需要装饰器HttpPost和HttpGet。如果你删除它们应该可以工作。