Asp.net web api 当涉及到自定义模型时,如何执行asp.net webapi路由?

Asp.net web api 当涉及到自定义模型时,如何执行asp.net webapi路由?,asp.net-web-api,asp.net-routing,Asp.net Web Api,Asp.net Routing,我正在开发一个ASP.NETWebAPI应用程序,在路由方面遇到了一些困难。我的WebApi控制器中有以下代码 public class UserRegistrationServiceWebApiController : ApiController { [HttpPost] public void RegisterUser(RegisterUser registerUser) { /*Some code here*/ } [HttpP

我正在开发一个ASP.NETWebAPI应用程序,在路由方面遇到了一些困难。我的WebApi控制器中有以下代码

public class UserRegistrationServiceWebApiController : ApiController
{

    [HttpPost]
    public void RegisterUser(RegisterUser registerUser)
    {
        /*Some code here*/

    }

    [HttpPost]
    public void ConfirmUserPassword(UserPasswordConfirmModel userPasswordData)
    {
        /*Some code here*/
    }
}
在我的RouteConfig.cs中,我给出了如下路线

routes.MapHttpRoute(
            name: "UserRegistrationApi",
            routeTemplate: "api/{controller}/{action}/{firstName}/{lastName}/{email}/{phoneNo}/{company}"
        );

        routes.MapHttpRoute(
            name: "UserPasswordConfirmationApi",
            routeTemplate: "api/{controller}/{action}/{userId}/{password}"
        );
这里的属性(firstName、lastName等)是从客户端正确填充的,当我分别调用这两个操作时,我可以在服务器端看到它们。但当两个动作都在控制器中时,它表示无法识别要选择的动作。这显然是因为我在服务器端填充了自定义对象(RegisterUser模型和UserPasswordConfirmModel模型)。所以这里有冲突

这是因为路由问题。谢谢你的帮助

提前谢谢

事实上,我发现问题在于同一个控制器中两个动作的冲突。如果我分别使用这两个动作,它们会很好地工作。我不知道当我们在同一个控制器中有两个动作时如何处理,如上面所述。 我查看了自定义参数绑定,但我认为这不是问题所在,因为我的操作可以单独工作


谢谢。

简短回答,不要在同一控制器上执行两个操作。但如果需要,请使用特定管线(添加约束)。此外,是否有理由在url中使用密码

    routes.MapHttpRoute(
        name: "UserRegistrationApi",
        routeTemplate: "api/{controller}/{action}/{firstName}/{lastName}/{email}/{phoneNo}/{company}",
        constraints = new { action = "RegisterUser" }
    );

    routes.MapHttpRoute(
        name: "UserPasswordConfirmationApi",
        routeTemplate: "api/{controller}/{action}/{userId}/{password}",
       constraints = new { action = "ConfirmUserPassword" }
    );

“什么”不起作用?例外情况?错误信息?无论你做什么,它总是走同一条路线吗?是的,先生,它说的是同一条错误消息,因为控制器中有一个或多个操作可以匹配此路线。。