MVC4로 작성된 앱 하버에서 앱을 실행 중입니다.
CSS 파일 번들이 작동하지 않습니다. 디버그 모드의 로컬 컴퓨터에서 앱 코드가 표시되고 파일이 표시됩니다. 앱이 예상대로 작동합니다.
<link href="/Content/css/home/basic-jquery-slider.css" rel="stylesheet"/>
<link href="/Content/css/home/Home.css" rel="stylesheet"/>
Appharbor에 앱을 업로드하면 코드에 번들이 표시되지만 앱이 작동하지 않습니다.
<link href="/Content/css/home?v=zhVOIpUNuvCOZhJyBcQWpMlozayor4te6k-pM29wHqI1" rel="stylesheet"/>
에서 해당 링크를 탐색 href
하면 403-금지됨 : 액세스가 거부됩니다.
이 문제를 해결하는 방법은 무엇입니까?
답변
내 추측은 경로 Content/css
가 앱의 디스크에 존재한다는 것입니다. 이 경우 IIS는 MVC가 아닌 요청을 처리합니다.
번들의 가상 경로 (StyleBundle 생성자의 매개 변수)가 파일 시스템의 폴더와 일치하지 않는지 확인하십시오.
의견에서 :
“번들을 만들 때 따라야 할 좋은 규칙은”번들 “을 묶음 이름에 접두사로 포함시키는 것입니다. 이는 라우팅 충돌 가능성을 방지합니다.”
답변
이 문제는 기본적으로 .NET은 확장자가 .js 또는 .css 인 요청을 “처리”하지 않습니다.
이에 대한 두 가지 수정 사항이 있습니다 (하나만 수행하면 됨).
A) 번들 이름에서 확장명을 제거하십시오. (권장) 이로 인해 .NET은 요청을 처리하고 BundleModule을 통해 요청을 실행합니다.
B) 이것을 system.webServer 섹션 의 web.config에 추가 하면 .NET이 BundleModule을 통해 .js 및 .css 요청을 실행하게됩니다.
<modules runAllManagedModulesForAllRequests="true">
<remove name="BundleModule" />
<add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>
실제 원인을 찾아 내 블로그에서 나와 공유 한 Ray Moro에게 큰 소리로 외쳤다.
http://blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc-apps.html
답변
AppHarbor에 ASP.NET MVC 앱을 배포하려고 할 때 나와 함께 일어났습니다.
이름이있는 스타일 시트 번들이있었습니다.
@Styles.Render("~/Content/bootstrap")
폴더 구조는
-내용
-내용 \ 부트 스트랩 \ …
번들 이름을 "~/Content/bootstrap-css"
내 문제로 변경하면 문제가 해결되었습니다.
답변
나는이 질문에 4 년 늦었다는 것을 알고 있지만 이것은 나를 위해 일했다.
public static void RegisterBundles(BundleCollection bundles)
{
...
BundleTable.EnableOptimizations = true; // Added this
}
답변
403 오류가 해결되었습니다. 다음은 403 오류에 대한 자세한 설명 및 해결책입니다. CSS 번들에 대한
솔루션 이 시연되었습니다. 그러나 JavaScript에도 적용됩니다.
http://www.mvccentral.net/Story/Details/articles/kahanu/stylebundle-403-error-solved
간단히 말해서, 가상 경로가 있는지 확인 [Script | Style]Bundle("~/content/[script | css]")
파일 시스템 (예를 들어 폴더를 일치하지 않는 C:\approot\Content\[script | css]
대신)[Script | Style]Bundle("~/content/[scriptDiff | cssDiff]")
답변
BundleConfig 클래스에서 아래 코드를 추가하여 문제를 해결했습니다.
BundleTable.EnableOptimizations = false;
답변
내가하는 일은 매우 간단합니다
ScriptBundle의 끝에 “js”를 추가합니다 : new ScriptBundle ( “~ / bundles / appjs”) 그리고 StyleBundle의 끝에 “css”를 추가합니다 : new StyleBundle ( “~ / content / appcss”)
내 폴더 이름은 “js”또는 “css”로 끝나지 않습니다.
그렇게해야합니다.