2015-10-14 8 views
0

У меня есть приложение MVC, которое использует AngularJS. Я занимаюсь организацией структуры папок, основанной на характеристиках, а не на основе типов.Слушать веб-файлы из разных директорий - Ошибка 400 Bad Request

структуру папок Пример теперь

  • приложения (папки в пределах основного проекта, на таком же уровне, что и просмотров)
    • активы
      • CSS
      • JS
    • Страницы
      • Главная
        • home.js
        • home.tests.js
        • home.html
      • О (и т.д.)

Теперь проблема в том, что когда ui-router пытается загрузить home.html, веб-сервер выдает ошибку 400. Если я иду в файл вручную в браузере, он работает. В чем проблема? Почему я не могу обслуживать файлы из этого каталога. Обратите внимание, что я на самом деле правой кнопкой мыши нажмите на сообщение 400 в консоли и выберите «Открыть» на новой вкладке. Так что я знаю, файл я смотрю на это URL запрашивается от AngularJS

Вот мой ui-router установка

.state('home', { 
    url: '/home', 
    templateUrl: '/app/pages/home/home.html', 
    controller: 'mainPageController' 
}) 

Примечание: служу вверх .js файл из того же каталога, который кажется работать нормально!

+0

Если вы используете IIS, у вас должно быть более подробное сообщение об ошибке в журналах IIS. – Jim

+0

Существует ли проблема только в производстве или во всех средах? –

+0

Я только в dev atm, поэтому с помощью IIExpress .. Вот сообщение об ошибке '2015-10-14 15:19:16 :: 1 GET /app/pages/home/home.html - 1904 - :: 1 Mozilla /5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML ,+like+Gecko)+Chrome/45.0.2454.101+Safari/537.36 http: // localhost: 1904/400 0 87 1' – Chris

ответ

0

По умолчанию маршрутизатор будет запускаться на верхнем уровне вашего проекта MVC (т. Е. Где находятся ваши представления и папка приложения), а не в папке, в которой работает ваш JavaScript.

Таким образом, в Угловом шаблоне должен быть App/Pages/Home/home.html.

Таким образом, в вашей угловой конфигурации маршрутизатора имеют свойство:

templateUrl: 'App/Pages/Home/home.html' 
+0

Эй, спасибо, но я уже использую абсолютные пути – Chris

1

У меня была точно такая же проблема, и это было вызвано другим разработчиком пытается исправить ошибку кэширования IE.

Я нашел решение здесь Ben Cull: https://stackoverflow.com/a/30014936/710268.

//initialize get if not there 
if (!$httpProvider.defaults.headers.get) { 
    $httpProvider.defaults.headers.get = {}; 
} 

//disable IE ajax request caching 
$httpProvider.defaults.headers.get["If-Modified-Since"] = "Fri, 01 Jan 2010 00:00:00 GMT"; 

Моя проблема заключалась в том, что «If-Modified-Since» заголовок был установлен в «0» и по какой-то причине, что причинял файлы HTML шаблон не нагружать.

+0

Интересный момент, спасибо, однако я не думаю, что он работал в любом браузере! Я обновил свой код, хотя в любом случае :) – Chris

+0

Он не работал ни в одном браузере для меня. Я только что упомянул ошибку IE, потому что попытка исправить эту ошибку кеширования вызвала эту ошибку, которая закончилась тем, что ломалась во всех браузерах. – Justin