我正在开发一个 ASP.Net WebApi 应用程序并在路由方面遇到一些困难。我的 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}"
);
这里的属性(名字、姓氏等)是从客户端正确填充的,当我分别调用这两个操作时,我可以在服务器端看到它们。但是当两个动作都在控制器中时,它说它无法确定要选择哪个动作。这显然是因为我在服务器端填写了自定义对象(RegisterUser 模型和 UserPasswordConfirmModel 模型)。所以那里有冲突。
这是因为路由问题。感谢任何形式的帮助。
提前致谢。
实际上我发现问题在于同一个控制器中的两个动作的冲突。如果我分别使用这两个动作,它们可以正常工作。当我们在上面的同一个控制器中有两个动作时,我不知道如何处理。我查看了自定义参数绑定,但我认为这不是问题,因为我的操作单独工作正常。
谢谢。