2

我有两个动作,每当我明确地调用第二个时,第一个仍然会被调用。我需要能够在 mysite.com/api/Awesome/GetSomeExamples 中写入,而不是总是触发 GetAllClasses

public class AwesomeController : Controller
{
   public IEnumerable<myClass> GetAllClasses()
   {
      //...some stuff
   }
   public IEnumerable<string> GetSomeExamples()
   {
       //...some stuff
   }
     //... also have some more actions which take in one parameter
}

我的路由就是这样,但不起作用

 public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "ActionApi",
                url: "api/{controller}/{action}/{id}",
                defaults: new { id = UrlParameter.Optional }
            );
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }

我得到的错误:找到与请求匹配的多个操作

4

1 回答 1

5

您正在使用 Web API。

与普通 MVC 操作的不同之处在于 Web API 查看 HTTP 动词以确定要调用的操作。在这种情况下,您有两种方法以Get

但是,这应该会触发一个错误:Multiple actions were found that match the request... 并且它不应该同时调用这两个动作。

您需要的网址是:

mysite.com/api/Awesome/

从那里,Web API 将调用一个以Get. 您需要删除另一个 get 方法并将其放入不同的控制器中。Web API 假设每个 http 动词都有一个操作

于 2013-05-08T14:06:05.320 回答