2016-08-08 21 views
5

Ich arbeite an einer Angular2 App. Es verwendet "@ angular/common": "2.0.0-rc.4" und "@ angular/router": "3.0.0-beta.2".Angular2 - Seitenaktualisierung 404, wenn in Azure gehostet

Mein Problem ist, dass, wenn ich die Aktualisierung des Browsers auf einigen der Seiten verwenden, sehe ich eine Fehlermeldung, ...

"Die Ressource Sie suchen, entfernt wurde, hatte seinen Namen geändert, oder ist vorübergehend nicht erreichbar."

Das passiert auch, wenn ich die URL direkt drücke.

Eine Beispiel-URL ist ... https://tilecasev2.azurewebsites.net/profile/therichmond

Allerdings, wenn Sie sehen Seiten über die Homepage sie ok arbeiten, aber nur bis zum aufgefrischt (https://tilecasev2.azurewebsites.net).

ich unten in meinem index.html Kopf haben ...

<base href="/"> 

Warum dies geschieht und wie kann ich es beheben?

+1

Klingt wie ein dup von http://stackoverflow.com/questions/31415052/angular-2-0 -router-not-working-on-reloading-the-browser –

+0

Ich denke, dass der Router seit damals geändert hat und die Fehlerbehebung nicht mehr funktioniert. –

+0

Es hängt nicht mit dem Router zusammen. Der Server muss HTML5 pushState unterstützen oder Sie müssen den Angular2-Router auf "HashLocationStrategy" umstellen, dann ist keine Serverunterstützung erforderlich. –

Antwort

23

HashLocationStrategy das Problem vermeidet, indem ein # in allen Ihren Winkel Routen, einschließlich, aber nicht wirklich fix es.

Damit eckige Routen ohne Hashes in derselben Weise wie in Ihrer lokalen Entwicklungsumgebung funktionieren, müssen Sie IIS nur so konfigurieren, dass alle Anforderungen als root neu geschrieben werden. Dadurch kann das Routing kantig gehandhabt werden.

Um dies zu tun, fügen Sie eine Web.config Datei auf Ihrem Stammordner der Site mit den folgenden Inhalten:

<configuration> 
<system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="Main Rule" 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> 
+0

Dies tat es für mich! Danke Steve! –

+0

Suche - kopieren - es funktioniert! Ich liebe stackoverflow. Danke. – Reinhard

+0

Ich lege die web.config in den 'src' Ordner und alles funktioniert jetzt. –