Как развернуть приложение ASP.NET 5 Aurelia для Azure от VS2015

Я пытаюсь развернуть приложение Aurelia на основе скелет навигации ASP.NET 5 ES2016 в Microsoft Azure с использованием веб-развертывания ([щелкните правой кнопкой мыши] → публикация) из Visual Studio 2015.

Но я не могу заставить depolyment работать.

Я изменил настройки prepublish в файле project.json на:

"prepublish": [ "npm install", "gulp bundle" ]

но это только приводит к сбою процесса публикации в Visual Studio. Запуск gulp bundle с консоли отлично работает.

Итак, моя следующая попытка состояла в том, чтобы удалить все задачи prepublish, запустить gulp bundle вручную, а затем опубликовать. Это позволяет завершить процесс публикации, но веб-приложение на лазури никогда не загружается и в конечном итоге дает мне тайм-аут.

Думая, что это может иметь какое-то отношение к папке jspm_packages, которую я пробовал, включая те, что находятся в файле Web.xproj на основе этот поток github, но это приводит к следующей ошибке:

502 - Web server received an invalid response while acting as a gateway or proxy server.

Update

Я попытался установить сценарии prepublish и запустить dnu publish с консоли. Это работает без проблемного объявления, генерирует все необходимые выходные данные в папке \bin\output\wwwroot. Тем не менее, этот же процесс не выполняется при запуске из действия "Опубликовать действие контекстного меню" в Visual Studio; не генерируется выход.

Просто добавьте его здесь, если он проливает свет на проблему.

Обновление 2

Хорошо, я заметил, что сообщение закрытия команды dnu publish

Using command 'web' as entry point for web.config

И потом пенни упала. Навигационное решение Aurelia Skeleton определяет следующую команду в файле project.json:

"web": "Microsoft.AspNet.Server.Kestrel --server.urls=http://*:9000/",

который, конечно же, не будет работать в Azure. Итак, я удалил опции --server.urls, удалил скрипты prepublish снова из project.json и вот и вот, приложение запускается...

... разделены.

Во всяком случае, многое изменилось с момента ввода этого вопроса, но мне все еще интересно:

  • Почему публикация не выполняется из Visual Studio, когда у меня определены задачи prepublish?

  • Самое главное, как я могу опубликовать связанное приложение Aurelia с azure?

Обновление 3

Связывание работает, когда вызывается из консоли. Я думаю, что я никогда не пытался опубликовать прилагаемое приложение после удаления параметра --server.urls из project.json.

Итак, где мы находимся в?

Публикация на Azure с "prepublish": [ "gulp bundle" ] все еще не выполняется. Это gulpfile.js, который поставляется с навигационным скелетом Aurelia:

require('require-dir')('build/tasks');

И Visual Studio выдает ошибку в следующей строке watch.js при запуске prepublish задач:

console.log(`File ${event.path} was ${event.type}, running tasks...`);  

Это совершенно непонятно, потому что задача bundle не звонит watch. Когда-либо. И запуск gulp bundle с консоли работает, как ожидалось.

Итак, похоже, VS2015 загружает каждую задачу из папки build/tasks. Я пробовал полностью комментировать файл watch.js, но тогда я вижу только следующую ошибку: prepublish failed with code 1.

Любая помощь или идеи по поводу того, почему я не могу опубликовать с помощью задач prepublish, будет очень благодарна.

Ответ 1

Чтобы опубликовать Aurelia ASP.NET 5 ES2016 скелет навигации в Azure с помощью Web Deploy (щелкните правой кнопкой мыши > публикация), мы должны сделать два Изменения в project.json.

Добавьте запись, в которую будут устанавливаться NPM-зависимости (в противном случае gulp с ошибкой), установите пакеты JSPM и пакет с помощью gulp.

"prepublish": [ "npm install", "jspm install -y", "gulp bundle" ]

Удалите --server.urls=http://*:9000/ из веб-команды, потому что этот адрес не поддерживается в Azure. Это правильная запись:

"web": "Microsoft.AspNet.Server.Kestrel"

С этими двумя изменениями Web Deploy работает как с локальным IIS, так и с Azure Web App, используя обновление Visual Studio Community 2015 Update 2.