C# 4.0 ASP.NET MVC 4属性在同一控制器中执行多个POST操作
我不确定我在这里做错了什么。每当我向我的控制器发送请求时,更新操作总是被调用。我打电话:C# 4.0 ASP.NET MVC 4属性在同一控制器中执行多个POST操作,c#-4.0,asp.net-mvc-4,asp.net-web-api,C# 4.0,Asp.net Mvc 4,Asp.net Web Api,我不确定我在这里做错了什么。每当我向我的控制器发送请求时,更新操作总是被调用。我打电话: http://localhost/members/login/ 然而,Update不断收到请求。我甚至尝试在控制器中切换操作顺序,但都没有效果 [RoutePrefix("Members")] public class MembersController : ApiController { [POST("{member}")] public void Update(Member membe
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
}
}
非常感谢您的帮助。谢谢 这是因为对于Api路由,它们是相同的。详细解释如何在Web API中执行路由和操作选择。如果不想将它们拆分为两个控制器,则将
更新
作为放置
请求。这应该告诉路由引擎它们是两个不同的操作。我通过反复试验(很多小时:/)找到了答案
我不知道为什么会这样,但我相信最终我会明白的。当我打印路由表时,我看到这样一个:POST members/update/{member}controller:members action:update POST members/login/{member}controller:members action:login,所以我认为它们看起来不是同一回事。它们有不同的动作名称。我在控制器中有另一个PUT动作;我的“添加”操作。因此,该方法和操作的结果也是一样的。我可以让它工作,如果我注册我的路线个别,但我喜欢使用属性计算。你用什么路由引擎?
[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
}
}