2016-08-11 3 views
5

우리는 Angular2 App을 개발했습니다.IIS에서 직접 URL2 응용 프로그램을 호스팅 한 후 작동하지 않습니다.

우리가 'ng serve'로 각도 cli를 실행하는 동안 잘 작동합니다.

IIS 7.5에 응용 프로그램을 호스트하면 문제없이 응용 프로그램의 루트를 탐색 할 수 있으며 응용 프로그램 탐색에서 생성 된 다른보기로 이동할 수 있습니다.

하지만 사용자가 특정 경로 또는 구성 요소를 타겟팅하는 URL을로드하려고하면 문제가 발생합니다.

그래서 우리는 http://serverurl에 가면 ... 그것은 index.html을로드 한 후이 http://serverurl/route1/component1

에 사용자가 필요하지만 index.html을에 탐색 링크를 클릭 사용자로 이동하려고 할 때 url http://serverurl/route1/component1 브라우저 주소 표시 줄에 http://serverurl/route1/component1을 직접 입력하면 해당 요청을 IIS로 보내고 자원을 반환하고 오류를 찾을 수 없습니다.

그리고 이해하기 쉽습니다. url은 서버에 존재하지 않습니다. 그건 각도 URL입니다. 이상적으로는 index.html을로드하고 나머지 URL을 각 라우터로 전달하고 /route1/component1을로드해야합니다. 그리고 'ng serve'와 함께 작동하지만 IIS 7.5에서는 작동하지 않습니다. IIS에서 작동하도록 설정해야합니까? 또는 Anuglar2 앱에서해야 할 일이 있습니까?

누구나이 문제를 해결할 수있는 방법을 제안 할 수 있습니까?

+0

'URL 다시 쓰기'모듈을 사용하면 특정 URL 아래의 모든 항목을 해당 URL의 콘텐츠를 사용하도록 리디렉션하는 규칙을 작성할 수 있습니다. –

답변

23

나는이 다음 단계를 수행하여 해결할 수 ..

  1. https://www.microsoft.com/en-au/download/details.aspx?id=7435

  2. 추가에서 내 Web.config의에 다음과 같은 다운로드 URL의 Rewriter는 모듈

<configuration> 
 
    <system.webServer> 
 
    <rewrite> 
 
     <rules> 
 
     <rule name="AngularJS" stopProcessing="true"> 
 
      <match url=".*" /> 
 
      <conditions logicalGrouping="MatchAll"> 
 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
 
      </conditions> 
 
      <action type="Rewrite" url="/" /> 
 
     </rule> 
 
     </rules> 
 
    </rewrite> 
 
    </system.webServer> 
 
</configuration>

  1. index.html에 기본 태그를 설정합니다. 그것은

<base href="/"/>

이 세 단계는 IIS에 html5mode와 Angular2의 배포 URL을/각도 앱 당신을 설정합니다 즉시 < 머리 > 태그 다음에해야 7.5 또는 IIS 8.0

희망이 도움이 될 것입니다. 이 답변을 얻으려면 몇 가지 답변을 거쳐야합니다.

+1

나는 이것을하기위한 여러 가지 방법을 시도해 왔으며 이것은 내가 본 가장 깨끗하고 최상의 방법이다. 고마워! – peppermcknight

+1

기존 MVC 사이트가 있고 모든 Angular2 코드가 http : // serverURL/Angular2/아래에 있지만 http : // serverURL/Home/Index = MVC를 원할 경우 – Sean

+1

누구나 이것이 실제로 작동하는지 확인할 수 있습니까? IIS8에서? 우리는 이것이 IIS7.5에서는 작동하지만 IIS8에서는 작동하지 않을 수 있습니다. IIS8에서는 저장 한 URL을 사용하지 않는 한 사이트가 제대로 작동합니다. – Helzgate

1

Angular 4.0과 IIS 6.1을 사용하면 더욱 간단한 변경이 가능했습니다. 이것은 기본 폴더 대신에 명명 된 사이트를 사용하거나 위의 재 작성을 허용했습니다. 방금 기본 href를 '/'에서 내 앱 폴더의 이름으로 변경했습니다.

<head> 
    <base href="MyApp"> 
... 

희망 사항은 다른 사람들에게 유용합니다.

관련 문제