2

ASP.NET MVC 4 Bundling and Minification 기능을 사용하고 싶습니다. 디버그 모드를 실행하여 아무것도 번들되지 않았으므로 각각의 참조가 단일 태그 . 로컬 모든 작동합니다 :ASP.NET MVC 4 번들링 및 축소 : URL 재 작성을 사용하는 디버그 모드의 잘못된 경로

public static void RegisterBundles(BundleCollection bundles) 
{ 
     bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js")); 
} 

이제 뷰에서 @Scripts.Render("~/bundles/jquery")를 호출 할 때 다음과 유사한 태그가 생성됩니다

<script src="/Scripts/jquery-1.8.2.js"></script> 

결과 이 같은 경우입니다 그냥 쓸 것입니다 :

<script src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script> 

그러나 인터넷의 테스트 서버에 모든 것을 배포하면 (여전히 디버그 모드 사용) URL이 다시 작성되어 특정 도메인이나 하위 도메인을 특정 폴더로 라우팅하는을 다시 쓸 수 있습니다.

예를 들어 도메인이 sub1.example.com 인 경우 example.com/__sub1__으로 전달하고 sub2.example.com의 경우 example.com/__sub2__으로 전달하는 등의 작업을 수행 할 수 있습니다. 브라우저에서 sub1.example.com을 열면 일반적으로 이러한 전달이 발생한다는 단서가없고 URL이 변경되지 않고 모든 URL이 계속 작동하므로 Url.Content(...) 메소드를 사용하여 생성 된 참조를 수행합니다.

하지만 어떤 이상한 이유로, @Scripts.Render("~/bundles/jquery")에 대한 호출이 지금과 같은 렌더링 :

<script src="/__sub1__/Scripts/jquery-1.8.2.js"></script> 

생성 결코 표시되지 않아야하는 부분입니다 "/ SUB1"부분을주의하세요 렌더링 된 HTML 코드의 어딘가에서 URL이 앞으로 다시 작성되기 때문에 404로 연결됩니다.

동안 ...

<script src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script> 

는 ... 여전히 올바른 상대 경로를 "/Scripts/jquery-1.8.2.js"를 렌더링합니다. 그리고 URL을 다시 작성하는 데는 다른 문제가 없었습니다. 그리고 저는이 재 작성을 제거하고 싶지 않습니다.

분명히 스타일 시트에도 동일하게 적용됩니다.

내가 시도 할 수있는 아이디어가 있습니까?

답변

1

이것은 스크립트/스타일 헬퍼의 현재 구현과 관련된 버그입니다. ASP.NET에서 등록 된 VirtualPathProvider를 사용하기위한 지원으로 조만간 (10 월 초)에 사용할 수있는 1.1-alpha1 릴리스로 수정해야합니다. 이 일반적인 문제를 해결했습니다 (리소스 경로를 올바르게 해결 함).

+0

매우 깊이 관여 된 사람으로부터 답장을받는 것이 좋습니다. 가장 정확한 답을 얻을 수 있다고 확신합니다. 감사합니다. 이것을 확인할 수있을 때 이것을 정답으로 받아 들일 것입니다 ;-) – thmshd

관련 문제