13

이 같은 번들 정의하고 싶습니다 : 번들 이름이 바로이 작품 "~/style" 경우번들 이름에 파일 확장명을 사용할 수 있습니까?

bundles.Add(
    new StyleBundle("~/style.css").Include(
     //... 
)); 

을하지만, 파일 확장자는 항상 404가 나는 CSS와 JS의 서버 검색을 의심 반환 파일을 드라이브에 저장하고 번들링 시스템을 무시하지만 번들 이름에 파일 확장명을 포함하려는 다른 사람을 찾을 수 없습니다. URL 재 작성과 같은 작업없이이 작업을 수행 할 수 있습니까?

답변

19

당신은 Web.config의에 <system.webServer> 섹션에 다음을 추가 할 수 있습니다 : 여기에는 .js.css 정적 자원에 대한 요청이 관리 모듈을 통해 통과하고 ASP에 의해 차단 될 수 있도록한다

<modules runAllManagedModulesForAllRequests="true" /> 

. NET MVC.

모든 요청에 ​​대해 runAllManagedModulesForAllRequests을 사용하는 대신 사용할 URL에 대해서만 구성 할 수 있습니다. 그래서 <handlers> 안에 다음을 추가하십시오 :

<handlers> 
    <!-- ... --> 
    <add name="scriptBundle" verb="*" path="script.js" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" /> 
    <add name="cssBundle" verb="*" path="style.css" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" /> 
</handlers> 
+3

흠, .js 및 .css 파일에만 영향을 미치는 덜 혁신적인 솔루션이 있습니까? – sbking

+0

물론, 업데이트 된 답변을 참조하십시오. –

+1

+1하지만'path = "*. bundle.js"'를 사용하면 실제 파일에 대해 처리기가 실행되지 않습니다. –

관련 문제