5

IIS Expressを使用してデバッグ/実行し、http://localhost:1234/Peopleを参照すると、IIS ExpressはPeopleルートを実行する代わりにPeopleディレクトリを参照しようとします403.14 HTTPエラーそこで、Web.config内のStaticFileハンドラを無効にして更新しました。今私は404.4 HTTPエラーを取得:ASP.NET MVC5が物理パスに一致するルートのマップを拒否します

404私はルートがあるため、私はRoutePrefixの名前を変更する場合は、例えば働くことを知っている

PeopleTest、ルートが実行され、私は期待した応答を得る。

静的ファイル/ディレクトリよりもMVCルートを優先するようにIIS/Expressに納得させるにはどうすればよいですか?

私は属性ルーティングを使用しています。関連するコードは以下の通りです:

のWeb.config

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 

    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <remove name="StaticFile"/> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
</system.webServer> 

Global.asaxの

GlobalConfiguration.Configure(WebApiConfig.Register); 
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
BundleConfig.RegisterBundles(BundleTable.Bundles); 
AutofacConfig.Configure(); 

スタートアップ\ WebApiConfig

namespace MyApi.Startup { 
    public static class WebApiConfig { 
     public static void Register(HttpConfiguration config) { 
      config.MapHttpAttributeRoutes(); 
     } 
    } 
} 

人々\ PeopleController

namespace MyApi.People { 
    [RoutePrefix("People")] 
    public partial class PagesController : BaseController { 
     [Route] 
     [HttpGet] 
     [ResponseType(typeof(IEnumerable<Person>))] 
     public IHttpActionResult Get() { ... } 
    } 
} 

私は、ルーティング属性を使用していているので、私は非標準のフォルダ構造を使用していますので注意してください。例えば。私はコントローラ/モデル/ビューフォルダを持っていません。代わりに、ビジネスエリアごとにルートフォルダを持っています(例えば、~\Peopleには "人"ビジネスエリアのコントローラ/モデル/ etcが含まれています)。私はRAMMFAR設定

  1. を試してみた何

  2. ExtensionlessUrlHandler-Integrated-4.0を削除して再度追加します。

    public class RouteConfig 
    { 
        public static void RegisterRoutes(RouteCollection routes) 
        { 
         routes.RouteExistingFiles = true; 
         routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
        } 
    } 
    

    ASP.NETルーティングは、すべてのルートを処理するように:RouteExistingFiles = trueを設定する追加することにより、固定

+0

私はあなたがこの「ピープル構造」を使用しようとしていると思います[エリア](http://www.c-sharpcorner.com/UploadFile/4b0136/getting-started-with-area-in-mvc-5/)。私はあなたが提案したこの構造はうまくいかないと恐れています。 –

+0

私はエリアまたは標準のMVCルーティングを使用していません、私は属性ルーティングを使用しています:http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net -mvc-5.aspx –

答えて

関連する問題