2014-03-31 3 views
3

Visual Studio 2013 Durandal 템플릿에서 프로젝트를 만들고 프로젝트를 실행하면 개발 웹 서버에서 Durandal Starter Kit 웹의 작동 인스턴스를 제공합니다.MVC Durandal 앱은 서버 루트 URL에서만 작동합니다.

IIS 웹 응용 프로그램에 배포 할 때 스플래시 화면까지 도달하고 스톨됩니다. Fiddler는 GET /App/main.js HTTP/1.1을 시도하는 404를 밝혀 내기 때문에 분명히 이유가 있습니다.

이렇게하면 다음과 같은 질문이 생깁니다. 아마도주의가 필요한 설정이있을 수 있지만 어디서 무엇이 있을까요? GET /c2/App/main.js HTTP/1.1이거나 가능하면 GET App/main.js HTTP/1.1

답변

3

프로젝트 템플릿 작성자 나 당황스럽게 생각해야할지 모르겠다. Index.cshtml 파일에서 main.js는 다음 줄로로드됩니다.

<script type="text/javascript" 
     src="~/Scripts/require.js" 
     data-main="/App/main"> 
</script> 

정말요? 절대 URL?

적어도 수정하기 쉽습니다.

선도적 인 슬래시를 제거하거나이 같은 HTML에 기본 태그를 추가 다음 중 하나를

<html> 
    <head> 
    <base href="http://myserver/path/to/app/root/" /> 

당신 때문에 당신이 어떤 위치에 게시 할 수 있습니다 상대 경로로 data-main에서 선도적 인 슬래시를 제거하는 것이 더 낫다. 기본 태그의 상대 기준을 지정할 수도 있지만 테스트 해 본 적이 없으며 어쨌든 코드가 더 많습니다.

<script type="text/javascript" 
     src="~/Scripts/require.js" 
     data-main="App/main"> 
</script> 
2

경로에 관계없이 작동합니다. ASP.NET MVC - Razor을 사용하는 경우

data-main="@Url.Content("~/Scripts/app/main")" 

파일이 C2 프로젝트 폴더입니다 C2/스크립트/응용 프로그램/main.js에 위치한다고 가정.

관련 문제