2017-01-05 14 views
0

ここでは、複数のGetメソッドを実装しようとしていますが、ブラウザでエラーMultiple actions were found that match the requestが発生しています。なぜこれが起こるのですか?WebApiで複数のGetメソッドを実装する方法

Apiコントローラで私は2つのメソッドを追加しました:1. GetEmployee 2. HelloDeptそれらのうちの1つをコメントアウトするとうまくいきます。

public class TrailController : ApiController 
    { 
     private IProduct Repo = new Product(); 

     [HttpGet] 
     public IEnumerable<Employee> GetEmployee() 

     { 
      var x = Repo.GetEmp(); 
      return x; 

     } 
     [HttpGet] 
     public IEnumerable<Department> HelloDept() 

     { 
      var x = Repo.GetDept(); 
      return x; 

      } 

RouteConfig.csあなたWebApiConfig.csで

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

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


      ); 

答えて

0

その後、李アクションを呼び出す

`api/{controller}/{action}/{id}`. 

`api/{controller}/{id}` 

を変更keは -

http://localhost:port/api/controller/HelloDept 
http://localhost:port/api/controller/GetEmployee 


public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

enter image description here

enter image description here

+0

を参照してくださいが、何の結果も同じエラーが –

+0

複数のアクションは、その試合を見られませんでしたリクエスト:Application.Api.Controllers.Trai型のGetEmployee lController GetByIdタイプApplication.Api.Controller.TrailController HelloDeptタイプApplication.Api.Controllers.TrailController –

+0

あなたの設定とコントローラコードを投稿してください。 –

1

はRouteConfig.csでコードを変更します。から

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


     ); 

へ:また

routes.MapHttpRoute(
name: "API Default", 
routeTemplate: "api/{controller}/{action}/{id}", 
defaults: new { id = RouteParameter.Optional }); 

、私は変更を加えthis- Difference between "MapHttpRoute" and "MapRoute"?

関連する問題