2017-11-08 3 views
0

私はmvcプロジェクトを作成しました。プロジェクト内に複数のmvcコントローラがあり、正常に動作しています。私はウェブAPIコントローラCitiesを、コントローラフォルダの下のプロジェクトに追加しました。mvcプロジェクトで作成されたWeb APIコントローラのアクションメソッドのURLを取得する方法

今、私はそれを呼び出すことができません、実際に私はこのコントローラのURLを細かくすることができません。私は私のプロジェクトに静的なWebApiConfigクラスを追加して、それをApplication_Startメソッドで呼び出します。

//application start. 
     protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
      GlobalConfiguration.Configure(WebApiConfig.Register); 
     } 

//Register web api route 
     public static void Register(HttpConfiguration config) 
     { 
      config.MapHttpAttributeRoutes(); 

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

ウェブAPIコントローラ:

public class CitiesController : ApiController 
    { 
     CityEntities _entity = new CityEntities(); 

     // GET: api/Cities 
     [HttpGet] 
     public IEnumerable<City> Get() 
     { 
      return _entity.Cities.ToList(); 
     } 

     // GET: api/Cities/5 
     public City Get(int id) 
     { 
      return _entity.Cities.Where(x=>x.city_id==id).FirstOrDefault(); 
     } 
    } 

私はあるCitiesコントローラを呼び出すしようたURL。

しかし、動作しませ

enter image description here

+1

は、メソッド名は、 ')(ゲット'であると仮定すると、あなたがするべきではありません'/ Get'をURLに追加します。 – haim770

+0

URLに「/ api/Cities」という動詞は付きません – Shyju

+0

私にURLを教えてもらえますか? –

答えて

0

あなたは、そのアクションのルーティング属性を使用していない場合、アクションは、APIのルートをデフォルトにマップする必要があります。 APIルートのデフォルトルートのテンプレートを見て:/ {コントローラ}/{ID}考慮する

観光

API:

  • このルートはapi経路セグメントを有しています。したがって、2番目のURLはデフォルトのAPIルートと一致しません
  • このルートにはactionパラメータがありません。これは、ApiControllerのアクションがリクエストのHTTPメソッドによってマッピングされるためです。リクエストURLにアクション名を指定しないでください。規約上、HTTP GETリクエストの場合、アクション名はGet wordで始まる必要があります。

のでは、あなたの行動は、次のHTTP GETリクエストにマッピングする必要があり:

GET http://localhost:56261/api/Cities 
GET http://localhost:56261/api/Cities/5 

さらに読書:Routing in ASP.NET Web API

+0

このURLは機能しません。 –

+0

@UsfNoorでは、実行しようとしている 'Cities'コントローラとアクションのdefnintionを表示する必要があります。コントローラ名は何ですか?あなたはApiControllerから継承していますか?ルーティング属性を使用していますか?行動の名前は何ですか?また、ポート番号が正しいことを確認してください –

+0

'Cities'コントローラコードを追加しました。 –

関連する問題