0

私はasp.net mvc controllerという名前の製品を持っています。Web api route wintアクション複数のgetメソッドの名前が必要です

public class ProductController : ApiController 
{ 
    [HttpGet] 
    public IHttpActionResult Get() 
    { 
     return Ok("product"); 
    } 
} 

私のルートはこのようです。

config.Routes.MapHttpRoute("DefaultRoute", 
    "api/{controller}/{id}", 
     new { id = RouteParameter.Optional }); 

私は、製品がこのURLのような方法を取得しアクセスすることができます:localhost:2541/api/product

そして、私はいくつかのエストラがmethotsを得る必要があります。

public class ProductController : ApiController 
{ 

    [HttpGet] 
    public IHttpActionResult Get() 
    { 
     return Ok("product"); 
    } 

    [HttpGet] 
    public IHttpActionResult Hello() 
    { 
     return Ok("Hello from product"); 
    } 
} 

私は新しいルートを設定しました。

config.Routes.MapHttpRoute("ActionsRoute", 
    "api/{controller}/{action}/{id}", 
    new { id = RouteParameter.Optional }); 

しかし、私はlocalhost:2541/api/product

エラーにアクセスすることはできません。

Multiple actions were found that match the request: Get

答えて

0

{action}ルートパラメータを含めることで、今、他のリクエストで、アクションの名前を含めるように要求されているので、どのアクションを選択するかは分かりません。 like

localhost:2541/api/product/Get 

ルートが依然として必要な場合は、ルートをマッピングするときにデフォルトを含めます。それと

config.Routes.MapHttpRoute("ActionsRoute", 
    "api/{controller}/{action}/{id}", 
    new { action = "Get", id = RouteParameter.Optional }); 

は、以下の呼び出しは以下のようにマップされ、行わ

GET localhost:2541/api/product  --> ProductController.Get 
GET localhost:2541/api/product/Get --> ProductController.Get 
GET localhost:2541/api/product/Hello --> ProductController.Hello 
関連する問題