2

2 つのアクションがあり、2 番目のアクションを明示的に呼び出すと、最初のアクションも呼び出されます。常に GetAllClasses をトリガーすることなく、mysite.com/api/Awesome/GetSomeExamples に書き込むことができる必要があります。

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 動詞を見て、呼び出すアクションを決定することです。この場合、で始まる 2 つの方法があります。Get

ただし、これはエラーをトリガーする必要がMultiple actions were found that match the request... あり、両方のアクションを呼び出すべきではありません。

必要な URL は次のとおりです。

mysite.com/api/Awesome/

そこから、Web API は で始まるメソッドを呼び出しますGet。もう一方の get メソッドを削除して、別のコントローラーに配置する必要があります。Web API は、http 動詞ごとに 1 つのアクションがあると想定しています

于 2013-05-08T14:06:05.320 に答える