2015-05-22 3 views
2

Я пытаюсь получить Угловой u-маршрут для работы после развертывания на IIS7, но даже с настройкой перезаписи URL-адресов в web.config он все еще не работает так же хорошо, как в IIS express ,Угловой-UI-Router и публикация IIS

404 состояние всегда перехвачен IIS и отображает

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

Но мой маршрутизатор обрабатывает штраф 404 redirect и правильно загружает шаблон при использовании iis express.

Угловая конфигурация

.config(["$stateProvider", "$locationProvider", "growlProvider", "$urlRouterProvider", function ($stateProvider, $locationProvider, growlProvider, $urlRouterProvider) { 

    // UI States, URL Routing & Mapping. For more info see: https://github.com/angular-ui/ui-router 
    // ------------------------------------------------------------------------------------------------------------ 
    // the known route, with missing '/' - let's create alias 
    $urlRouterProvider.when("", "/"); 

    $stateProvider 
     .state("home", { 
      url: "/", 
      templateUrl: urlbase + "/views/login", 
      controller: "LoginCtrl" 
     }) 
     .state("modal", { 
      url: "/modal", 
      templateUrl: urlbase + "/views/modal", 
      controller: "ModalCtrl" 
     }) 
     .state("about", { 
      url: "/about", 
      templateUrl: urlbase + "/views/about", 
      controller: "AboutCtrl" 
     }) 
     .state("index", { 
      url: "/index", 
      templateUrl: urlbase + "/views/index", 
      controller: "IndexCtrl" 
     }) 
     .state("login", { 
      url: "/login", 
      //layout: "basic", 
      templateUrl: urlbase + "/views/login", 
      controller: "LoginCtrl" 
     }) 
     .state("404", { 
      url: "{path:.*}", 
      templateUrl: urlbase + "/views/404", 
      controller: "Error404Ctrl" 
     }); 

    $locationProvider.html5Mode(true); 

    growlProvider.globalTimeToLive(3000); 

}]) 

web.config для перезаписи URL

<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> 
    <staticContent> 
    <clear /> 
    <mimeMap fileExtension=".xml" mimeType="text/x-cross-domain-policy" /> 
    </staticContent> 
</system.webServer> 

Я пропускаю что-то здесь? Благодаря!

+0

Ошибка говорит, что вы пытаетесь получить доступ к одному ресурсу, но он не находит его. Вы уверены, что все ваши шаблоны доступны? – carton

+0

Да, на 100% уверен, я могу получить доступ ко всем шаблонам, когда я жестко кодирую относительный путь в браузере. И маршрутизация отлично работает в iis express, так что это должно быть что-то делать с IIS – Brandonm

ответ

0

В случае, если кто-либо сталкивается с подобной проблемой, я решил это на размещенном сервере, добавив специальный URL-адрес страницы ошибки для кода статуса 404, используя параметр «выполнить URL на этом сайте».

+0

У меня такая же проблема на iis8. Что вы указали в поле URL (относительно корня сайта)? Главная страница вашего углового сайта? – Patrick

+0

У меня есть пользовательская страница 404, которую я объявил в моем угловом модуле, поэтому я просто использую относительный uri для перехода к этому состоянию из корня. Так что мой просто /404.cshtml в противном случае, если это не работает для вас, и вы можете перемещаться с полным URL-адресом на страницу, которую вы хотите, я уверен, что использование перенаправления на абсолютный путь будет работать точно так же. – Brandonm

+0

Хорошо, я дам ему шанс. – Patrick

Смежные вопросы