ASP.NET MVC 4 AttributeRouting在同一控制器中的多个POST操作

时间:2013-04-05 03:05:47

标签: c#-4.0 asp.net-mvc-4 asp.net-web-api

我不确定我在这里做错了什么。每当我向控制器发送请求时,始终会调用Update操作。我在打电话:

http://localhost/members/login/

然而,Update不断获取请求。我甚至尝试在控制器中切换动作的顺序无济于事。

[RoutePrefix("Members")]
public class MembersController : ApiController
{
    [POST("{member}")]
    public void Update(Member member)
    {
        //Do Some Stuff
    }

    [POST("Login/{member}")]
    public HttpResponseMessage MemberLogin(Member member)
    {
       //Do Some Stuff
    }
}

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

那是因为Api路由它们是相同的。 This article极大地解释了如何在Web API中完成路由和操作选择。如果您不想将它们拆分为两个控制器,请将Update作为PUT请求。这应该告诉路由引擎它们是两种不同的行为。

答案 1 :(得分:0)

我想通过反复试验(很多小时:/)

[RoutePrefix("Members")]
public class MembersController : ApiController
{
    [POST("Update")]
    public void Update(Member member)
    {
        //Do Some Stuff
    }

    [POST("Login")]
    public HttpResponseMessage MemberLogin(Member member)
    {
       //Do Some Stuff
    }
}

不确定为什么会这样,但我相信它最终会来找我。