2016-08-31 19 views
4

静的ファイルを正しく処理できないASP.NETコアに問題があります。私は、wwwrootの下のnode_modulesに私のアプリケーションの一部を持っています。ほとんどの場合、すべてのファイルが機能しますが、例外があります。 * .js.mapファイルはMVCコントローラにルーティングされ、実際のファイルではなくMVCページを提供します。その結果、私は、このようなASP.NET Core MVC内の一部の静的ファイルの提供に関する問題

としてブラウザにエラーがSourceMapの解析に失敗しましたを取得します。http:// localhost:5000/node_modules /ストラップ/ bootstrap.min.css.map 同じルートを行く

私のWebフォント(Bootstrapに含まれているものなど)も適切に提供されず、静的ファイルミドルウェアではなくMVCミドルウェアによっても処理されます。 node_modulesにあるすべてのファイルは、私の静的ファイルミドルウェアにルーティングする必要がありますが、これは起こっていません。おかげさまで

 
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
     { 
      loggerFactory.AddConsole(); 

      if (env.IsDevelopment()) 
      { 
       app.UseDeveloperExceptionPage(); 
      } 

      app.UseStaticFiles(); 
      app.UseStaticFiles(new StaticFileOptions 
      { 
       FileProvider = new PhysicalFileProvider(Path.Combine(env.WebRootPath, @"node_modules")), 
       RequestPath = new PathString("/node_modules"), 
       ServeUnknownFileTypes = true 

      }); 

      app.UseMvc(config => 
      { 

       config.MapRoute("Default", "{controller}/{action}/{id?}", 
        new { controller = "Home", action = "Index" }); 

       config.MapRoute("AngularDeepLinkingRoute", "{*url}", 
        new { controller = "Home", action = "Index" }); 
      }); 
     } 

答えて

1

問題は、* .js.mapファイルなどの静的ファイルが、欠落している場合、静的ファイルミドルウェアはリクエストを処理していないということであり、それはMVCのミドルウェアに行きます。

0

node_moduleディレクトリがwwwrootディレクトリの下にある場合は、node_module内のコンテンツとして扱われます、次のコードだけ

app.UseStaticFiles(); 

を使用して次のコード、それはすべての

app.UseStaticFiles(new StaticFileOptions 
     { 
      FileProvider = new PhysicalFileProvider(Path.Combine(env.WebRootPath, @"node_modules")), 
      RequestPath = new PathString("/node_modules"), 
      ServeUnknownFileTypes = true 

     }); 

では必要ありませんを削除します静的コンテンツ静的ファイルは、プロジェクトのWebルートディレクトリに保存されます。デフォルトのディレクトリは/ wwwrootです。詳細について

は次のリンクnode_modulesを想定し Microsoft Docs - Working with static files

+0

を参照してください5000ポートで実行されているwwwrootの&プロジェクトの下で、静的コンテンツのURLが \t HTTPのようになります:// localhostを:5000/node_modules/favicon.icoを \tまたは \t http:// localhost:5000/node_modules/index.html – parag

関連する問題