2016-09-16 1 views
0

コントローラーと同じ名前/ルートのルートレベルフォルダーを作成すると、IISがフォルダーに接続しようとしていて、WebAPI 2ルーティング。コントローラーと同じ名前のフォルダーを作成すると、404 - Web API 2が発生する

例:

ProjectA 
|- Controllers/ 
|-- ExamplesController.cs 
|- Examples/ 

ExamplesController

[RoutePrefix("examples")] 
public class ExamplesController : ApiController 
{ 
    [HttpGet] 
    [Route("")] 
    public async Task<IHttpActionResult> Get() 
    { 
    // code 
    } 
} 

期待がコントローラを打つことで、しかし、IISは代わりにフォルダを試み、閲覧しているようです。

例:http://localhost:123/examples

未遂ソリューション:

は、私は他のすべてのハンドラを削除することができるかどうかを確認するためにIISハンドラの周りにプレーしようとしたが、それは

Webの助けにはなりませんでした.config

答えて

1

ルーティングシステムは、URLがファイルと一致するかどうかを確認するためにファイルシステムをチェックします/フォルダをディスク上に作成します。一致するものが見つかった場合、ルーティングは無視され、要求はルートエントリをバイパスして、ファイルが直接配信されます。静的ファイルは、あなたのRouteConfigにtrueにRouteExistingFilesプロパティを設定することができ、この動作を変更するにはルーティング

MVCを経由せずに提供されるように、これは、しかし、これはそう徹底的に

それらをテストするか、あなたの静的ファイルに影響を与える可能性があり、
routes.RouteExistingFiles = true; 
+0

パーフェクト、これを試して、それが答えとしてマークしている場合は、記載されているように動作します – Oliver

+0

これを試しましたか?どんな問題? –

+1

これは期待通りに機能しましたが、私たちのAPIからの静的コンテンツは提供していないためです。あなたが提供する必要がある場合は、エクステンデッドルーティングと静的コンテンツの両方を持っている方が手間がかかります。 – Oliver

関連する問題