Как запустить приложение функции Azure на другом порту в Visual Studio

Я устанавливаю локальный порт хоста в local.установочный.формат JSON. Ссылаясь на Microsoft doc https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local

файл выглядит, как показано ниже

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "AzureWebJobsDashboard": ""   
  },
  "Host": {
    "LocalHttpPort": 7073
  }
}

когда я запускаю / отлаживаю решение, VS по-прежнему размещает приложение на порту по умолчанию (7071)

Я проверил каталог bin,local.setting.json файл получает там с вышеуказанными настройками. Бег!--13-->Azure Fucntion CLI (func host start) от бин каталог правильно считывает номер порта.

похоже, VS не использует "LocalHttpPort порт". Есть ли другие изменения, необходимые в настройках. У меня есть Предварительный просмотр Visual Studio 2017 (2)

4 ответов


командная строка имеет приоритет над файлом настроек, проблема в том, что VS передает явный порт в командной строке.

работа вокруг, чтобы пройти project -> properties -> Debug, затем в Application arguments взять под контроль args. вы можете ввести host start --pause-on-error

enter image description here

редактировать из ravinsp:

обновление для .Net Core 2.0 function project:

аргументы командной строки вы должны пройти различные. Вы должны пройти по пути к dll впереди. Вроде этого: %AppData%\..\Local\Azure.Functions.V2.Cli.0.1-beta.22\Azure.Functions.Cli.dll host start --pause-on-error вы можете увидеть сами, запустив функцию в Visual Studio и с помощью Process explorer, чтобы увидеть args командной строки в dotnet.процесс exe.

edit: слово


правильный ответ для .NET Core 2.0 / .NET Standard 2.0 Azure Functions project в Visual Studio 2017 при установке Azure Functions Core Tools 2.X время выполнения через NPM

я следил за ответом @ahmelsayed и, в частности, комментариями @ravinsp для комментариев .net core 2.0. Хотя они очень полезны и ставят меня на правильный путь, они не работают для меня без важной и неинтуитивной модификации, поэтому я добавляю свежий ответ.

TL; DR;

если вы использовали NPM для установки Azure Functions Core Tools 2.X Runtime тогда Вам может потребоваться установить Аргументы Project/Properties/Debug/Application в:

C:\Users\<myuserid>\AppData\Roaming\npm\node_modules\azure-functions-core-tools\bin\func.dll host start --port 8888 --pause-on-error

длинный ответ ниже ...

Мои Настройки

во время этого упражнения моя настройка полностью обновлена (на момент написания) и выглядит следующим образом:

  • Visual Studio 2017 Professional: 15.6.2
  • функции Azure и веб Работа Инструменты: 15.0.40215.0
  • Windows 10 10.0.16299 Построить 16299
  • Azure Functions Core Tools (устанавливается в соответствии с разработка и запуск функций Azure локально документ от Microsoft) отчеты (в Git Bash):

    me@MYDESKTOP ~ $ func <snip/> Azure Functions Core Tools (2.0.1-beta.24) Function Runtime Version: 2.0.11587.0

fwiw, вкладка "Настройки Приложения функций" для этого приложения функций в Azure гласит:

Runtime version: 2.0.11587.0 (beta)

Мой Вопрос

когда я запускаю свой проект функций (без аргументы приложения) я получаю это в выводе консоли:

[17/03/2018 21:06:38] Starting Host (HostId=MYMACHINE, Version=2.0.11353.0, ProcessId=<snip/>
Listening on http://localhost:7071/

это само по себе не может быть проблемой, но я начинаю раздражать "работает на моей машине, терпит неудачу при публикации в azure", поэтому я хочу убедиться, что локальное выполнение использует ту же среду выполнения функций, что и azure (т. е. 2.0.11587.0, которая, согласно примечаниям к установке выше, это/должна быть, верно?)

Итак, основываясь на инструкциях @ravinsp, я запускаю поиск на моем диске C, чтобы найти Лазурный.Функции.Кли.dll - есть только один, и он находится по адресу C:\Users\<myuserid>\AppData\Local\Azure.Functions.V2.Cli.0.1-beta\Azure.Functions.Cli.dll что кажется очень совместимым с ответом @ravinsp.

Итак, я добавляю следующие аргументы Project/Properties/Debug/Application:

C:\Users\<myuserid>\AppData\Local\Azure.Functions.V2.Cli.0.1-beta\Azure.Functions.Cli.dll host start --port 8888 --pause-on-error

тогда я получаю порт 8888, но время выполнения странно еще сообщается как 2.0.11353.

[17/03/2018 21:13:02] Starting Host (HostId=MYMACHINE, Version=2.0.11353.0, ProcessId=<snip/>
Listening on http://localhost:8888/

решение

учитывая, что запуск func из Git Bash в соответствии с вышеизложенным показал время выполнения 2.0.11587.0, я попытался which func, который возвращен /c/Users/<myuserid>/AppData/Roaming/npm/func . Я сделал кошку на нем, и короче говоря, я мог видеть, что в конечном итоге он работает C:\Users\<myuserid>\AppData\Roaming\npm\node_modules\azure-functions-core-tools\bin\func.exe, и что в том же каталоге был func.dll.

Итак, я попробовал следующие аргументы Project/Properties/Debug/Application:

C:\Users\<myuserid>\AppData\Roaming\npm\node_modules\azure-functions-core-tools\bin\func.dll host start --port 8888 --pause-on-error

тогда, наконец, я получаю ...

[17/03/2018 21:16:29] Starting Host (HostId=MYMACHINE, Version=2.0.11587.0, ProcessId=<snip/>
Listening on http://localhost:8888/

и, что важно,ошибка, которую я получал при публикации в Azure, начинает проявляться локально.

ок, сейчас время выполнения все в синхронизации, время, чтобы приступить к исправлению моей фактической ошибки:)


я использовал принятый ответ, но я все еще получил ошибку, когда порт отладчика пытался привязать, потому что оба приложения функции пытались привязаться к 5858.

чтобы обойти это, я добавил еще один атрибут к доводам приложения в настройках проекта и мои доводы выглядят так:

host start --pause-on-error --nodeDebugPort 5860

Я использую версию CLI 1.2.1 и следующее Application arguments настройка в Project Properties -> Debug работал для меня.

host start --port 7074 --nodeDebugPort 5860