Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# webapi错误找到多个与请求匹配的操作_C#_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# webapi错误找到多个与请求匹配的操作

C# webapi错误找到多个与请求匹配的操作,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我有一个accountcontroller,它有两个操作,以下是声明: HttpResponseMessage PostAccount([FromBody] Account account) public HttpResponseMessage PostLogin([FromBody]string email,[FromBody] string pass) 在fiddler中运行时,我收到错误消息,发现多个操作与请求匹配。我对发生的事情有点困惑。我应该制作两个控制器用于登录和注册吗?这是标准做

我有一个accountcontroller,它有两个操作,以下是声明:

HttpResponseMessage PostAccount([FromBody] Account account)
public HttpResponseMessage PostLogin([FromBody]string email,[FromBody] string pass)

在fiddler中运行时,我收到错误消息,发现多个操作与请求匹配。我对发生的事情有点困惑。我应该制作两个控制器用于登录和注册吗?这是标准做法。

在Web API中,只能有一个来自主体的参数。如果希望在主体中包含多个对象,则应将它们包装在容器类中

发生错误是因为您有两个以“Post”开头的操作。您可以创建单独的控制器,如果要发布不同类型的实体,这很有意义。或者,您可以使用基于操作的路由并创建如下所示的路由:

config.Routes.MapHttpRoute("ActionBased", "{controller}/{action}");

在发布时区分这两种操作。

谢谢。相同的规则是否适用于PUT、GET和DELETE?示例GetData(字符串名称)和GetInformation(字符串标题)只要参数不同,就可以让GetData和GetInformation在没有基于操作的路由的情况下正常工作。所以它应该会起作用。您只需通过使用Account?name=foo获取数据,并使用Account?title=bar获取信息