2013-10-09 61 views
10

私はここに夢中になります...これは非常に単純な作業のようです。まずは、Web ApiとMVCの基本を知っています。私を串刺しにしてはいけません。ASP.NET Web APIのサブフォルダのルーティング

私は論理的に(組織の目的のために)コントローラのサブフォルダを作成する必要があります。私は思ったほどシンプルではなかったと感じました。私はこのようなデフォルトルートを持っています:

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

これは私のプロジェクトのコントローラフォルダから直接操作する必要があります。私は、コントローラのフォルダコントローラ/レポートにサブフォルダを追加しました。私は非常に少しだけ検索し、ちょうど解決策を見つけることができません。サブフォルダに転送するルートを追加するにはどうすればよいですか。 私が試してみました:

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

と:

config.Routes.MapHttpRoute(
      name: "ReportingApi", 
      routeTemplate: "api/Reports/{id}", 
      defaults: new { controller = "userunit" id = RouteParameter.Optional } 
+0

ルーティングは実際にファイルシステムを使用せず、コントローラの動作にルーティングします。 –

+0

しかし、コントローラがサブフォルダにある場合、ある時点でパスを提供する必要はありませんか?それはそれがそれを見つけるだけではないのですか? –

+0

規約では、フレームワークは 'Controller'フォルダ内のコントローラを探しますが、それ以上のものはパスを見ていません。なぜあなたはすべてのコントローラのためのサブフォルダを作成する必要がありますか?必要に応じて、URLを正しく取得するためにルーティングを行うことができます。 –

答えて

3

ネヴァーマインドを私は馬鹿だ...私は、中にデフォルトルートを残したURL内の "レポート" を削除しました。コントローラがサブフォルダにあったとしてもコントローラが見つかりました。

+0

私はこれが問題を引き起こしていると感じています。サブフォルダを使用しているため、同じ名前の2つのコントローラが異なる名前空間で区切られている場合はどうでしょうか。これはWebApiデザインの見落としに過ぎません。 – MoonStom

関連する問題