2017-12-02 10 views
1

私は残りのAPIのエンドポイントを作るためにしばらく試してきました。しかし、テストすると、「リソースは見つかりません」と表示されます。ウェブブラウザでリソースを見つけることができません - .net web api

これは私のコントローラ(その一部)です。このメソッドにはアクセスしません。

[System.Web.Http.RoutePrefix("api/ticket")] 
public class TicketController : ApiController 
{ 
    private readonly ITicketService _TicketService = new TicketService(); 

    [System.Web.Mvc.HttpGet] 
    [System.Web.Mvc.Route("Prepare/{number:string}")] 
    public TicketViewModel Prepare(string number) 
    { 
     ... 
    } 

} 

これはRouteConfigから私の登録ルートです:

routes.MapRoute(
    name: "Default api with parameter", 
    url: "api/{controller}/{action}/{number}", 
    defaults: new { 
     controller = "Ticket", 
     action = "Prepare", 
     number = UrlParameter.Optional } 
); 
+0

あなたはMVCとWeb APIルート属性やルートの設定を混合しています。あなたの属性に使用している名前空間を見てください。 'RoutePrefix'は正しい名前空間を使用しますが、他のものは使用しません。 – Nkosi

答えて

0

あなたはMVCとWeb APIルート属性やルートの設定を混合しています。あなたの属性に使用している名前空間を見てください。

RoutePrefixは正しい名前空間を使用しますが、他のものは使用しません。

更新コントローラ

using System.Web.Http; 

[RoutePrefix("api/ticket")] 
public class TicketController : ApiController { 
    private readonly ITicketService _TicketService = new TicketService(); 

    //GET api/ticket/Prepare/123456789 
    [HttpGet] 
    [Route("Prepare/{number}")] 
    public TicketViewModel Prepare(string number) { 
     //... 
    } 

    //... 
} 

文字列がデフォルトであるとして何:stringルート制約はありません。

コンフィグレーションに関しては、通常、Web APIのコンフィグレーションは、属性ルーティングを有効にしてコンベンショナルベースのルートをコンフィグレーションするWebApiConfig.Register関数で検出されます。

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

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

リファレンスAttribute Routing in ASP.NET Web API 2

+0

WebApiConfigは私が取り組んでいるプロジェクトでは利用できません。 RouteConfigだけが利用可能です。最初に(?)を作成し、後者を削除する必要がありますか? –

+0

@AbcXyz答えに含まれるリンクを確認し、それに従います。 – Nkosi

+0

私もmvcに変更できますか? RouteConfigが既にmvcのために書かれているので、より簡単に思えます。 –

関連する問題