2012-08-03 4 views
12

그래서 HTML5 단일 페이지 응용 프로그램을 설정 했으므로 잘 작동합니다. 페이지가 /App/이고 어떤 사람이 콘텐츠로 이동하면 /App/Content/1234처럼 보입니다.AngularJS 및 ASP.Net의 단일 페이지 응용 프로그램은 정상적으로 작동하지만 브라우저에서 페이지를 새로 고치면 404 오류가 발생합니다.

한 가지 문제점 : 사용자가 페이지를 새로 고치면 실제로 존재하지 않으므로 서버가 해당 URL을 찾을 수 없습니다. /App/#/Content/1234으로 보내면 황금색이지만 가장 좋은 방법은 무엇입니까?/App 아래에 다양한 URL 스타일이 있습니다.

~/App/(.*)에서 모든 요청을 전체적으로 포착하고이를 ~/App/#/$1으로 리디렉션하는 가장 좋은 방법은 무엇입니까?

MVC에 등록 된 유일한 경로는 표준 OOTB 경로입니다.

+0

http://tarkus.me/post/32121691785/angularjs-with을 index.html을하는 (컨텐츠, 이미지, 스크립트 등을 제외한) 모든 URL을 가리 키도록 Web.config의에 재 작성 규칙을 추가 -asp-net-mvc-4 –

답변

4

서버와 같은 소리는 앱의 기본 URL에 대한 URL을 다시 쓰지 않습니다.

웹 서버에 필요한 URL 재 작성은 서버에 따라 다릅니다. 아파치에서는 mod_rewrite를 사용한다.

대신 URL을 "Hashbang mode"(기본값)로 전환하면 URL에 #이 (가) 후에 로컬 상태가 모두 저장됩니다.

내 앱에 서버 구성 변경이 필요하지 않으므로 hashbang 모드를 권장합니다.

AngularJS docs을 참조하십시오. "Hashbang 및 HTML5 모드"섹션 참조 HTML5 모드 섹션은 URL에 HTML5 모드를 지원하는 데 필요한 모든 구성 문제를 설명합니다.

+0

그래, 나는 hashbang 모드로 돌아가는 것을 끝내었다. 내가 원했던 것이 아니라, 더 나은 해결책을 찾을 때까지해야 할 일입니다. 불행하게도 아파치에 있지는 않습니다. 요구 사항은 Microsoft Technologies (예 : 요구 사항 일 수 있습니다) 였으므로 ASP.Net에서이를 수행 할 수있는 좋은 방법을 찾을 때까지 hashbangs가 유지됩니다. –

+1

나는 당신을 듣는다. html5 스타일은 좋은 단일 페이지 애플 리케이션 일 것이다. 그러나 그것은 단지 아직 여기에 없다. 좋은 소식은 사용자가 URL에 전혀 집중하지 않는다는 것입니다. 이것이 모바일 브라우저가 페이지에 들어가면 표시하지 않는 이유입니다. 데스크톱 브라우저는 앞으로도이를 강조하지 않을 것입니다. –

+0

'hashbang'메서드를 사용할 때 발생하는 문제는 완전히 커밋해야한다는 것입니다. 페이지를 새로 고치지 않아야하는 링크는 해시 및 선택한 hashPrefix로 시작해야합니다. 또한 html5 모드에서 Angular는 기존 브라우저를 감지하면 링크를 다시 작성합니다. – Schmuli

2

이 멋진 친구는 here을 수정하는 방법을 설명합니다. 간단히

: (당신은 아무것도에 대한 MVC 컨트롤러를 사용하지 않는 한)

  1. 는 MVC의 nugets 제거 - 당신은 웹 API의 nugets을 유지할 수 있습니다. 웹 페이지 및 면도기 패키지를 보관하십시오. 또한 MVC 컨트롤러 및 뷰를 삭제하십시오.
  2. 일부 web.config 수정 사항이있는 .cshtml 파일을 계속 사용할 수 있습니다. 번들링을 위해 번으로이 항목이 필요합니다.
  3. 마지막으로 당신은
관련 문제