2017-02-18 6 views
2

У меня есть сайт с угловым 2, основанный на Angular 2 "Tour of Heroes" Quick Start.Нужно устранить проблему маршрутизации с помощью функции Angular 2, работающей в службе Azure App

Он работает нормально, когда работает локально. После того, как вы решили больше не использовать локальные узловые_модули (за deployment steps с самого начала) и развертывание в веб-приложении Azure, приложение отлично работает, если я начинаю с корневого URL («/»). Однако, используя Угловую маршрутизацию, URL изменяется (например, на «/ home»), и если я обновляю F5 этого URL-адреса, приложение не загружается. Когда я делаю это, я получаю 404 с:

Ресурс, который вы ищете, удален, изменил его имя или временно недоступен.

Я пробовал использовать web.config, как описано here, но это не помогло. Кажется, что это проблема IIS, где он пытается обслуживать страницу вместо того, чтобы начинать с index.html. Мои маршруты определены в Angular, и они работают локально.

+0

Я не очень понятно, о сценарии * «приложение работает нормально, за исключением, когда я пытаюсь загрузить приложение из URL, кроме»/"* *. Поскольку Angular 2 является базой SPA, обычно для приложения есть только одна точка входа (например, 'index.html'). –

+0

Я только что обновил свое объяснение. Надеюсь, теперь это ясно. –

+1

Вы видели [это сообщение] (http://stackoverflow.com/questions/38823595/angular2-page-refresh-404ing-when-hosted-in-azure)? Как следует из ответа, вам нужно настроить «HashLocationStrategy», чтобы исправить это. –

ответ

6

Вы можете попробовать этот файл web.config

<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="AngularJS Routes" 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> 
      <caching enabled="true" enableKernelCache="true"> 
       <profiles> 
        <add extension=".js" policy="DisableCache" kernelCachePolicy="DisableCache" /> 
       </profiles> 
      </caching> 
    </system.webServer> 
</configuration> 
+0

Да, это раздел перезаписи конфигурации, который исправит эту проблему. – Elferone