2014-02-10 4 views
1

Я пытаюсь настроить Durandal для запуска под виртуальной папкой IIS при использовании PushState :true в конфигурации маршрутизатора.Приложение Durandal MVC, работающее под виртуальным каталогом IIS

Прекрасно работает при запуске через сказать http://localhost:24567

Но если я бегу под http://localhost/testapp (TestApp это виртуальная папка), маршруты не работают, и маршрутные ссылки, оказываемые без виртуальной папке «TestApp»

Есть ли способ установить базовый url либо с помощью require.js config, либо через Durandal router?

Благодаря

ответ

3

Хорошо, чувствуя себя немного глупо и должно быть RTFM!

Существует опция root при активации маршрутизатора, особенно при использовании push-state.

http://durandaljs.com/documentation/Using-The-Router.html

 router.map([ 
      { route: '', title:'Welcome', moduleId: 'viewmodels/welcome', nav: true }, 
      { route: 'flickr', moduleId: 'viewmodels/flickr', nav: true } 
     ]).buildNavigationModel(); 

     return router.activate({ pushState : true ,root:'/MvcApplication1'}); 

Мораль, прочитайте руководство более тщательно.

Благодаря Яго, который является автором фантастического демо-приложение для Дюрандала, который включает в себя членство/клиента авторизации на стороне, а также OAuth логины, Durandal Auth

+0

У меня подобное поведение кроме того, что я не использую нажимной состояние. Я просто попытался развернуть веб-сайт, созданный шаблоном проекта, без внесения каких-либо изменений. Как вы описали, он работает, когда обслуживается тестовым веб-сервером. Для меня показан экран заставки, но там он остается, когда обслуживается IIS. –

+0

Peter - возможно, попробуйте это (может быть, неважно о push-state) return router.activate ({root: '/ MvcApplication1'}); –

+0

Я использую тот же пример кода (DurandalAuth) и имею ту же проблему, о которой говорилось выше - экран загрузки остается открытым. Открыв Инструменты разработчика, я вижу, что проблема в том, что путь к файлу require.js неверен после развертывания образца на локальном веб-сервере IIS. Он использует http: //localhost/Scripts/require.js вместо http: //localhost/durandal/Scripts/require.js. Даже при настройке root на root: '/ durandal' все равно не работает. Любые идеи о том, что можно сделать? –

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