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

Я устанавливаю локальный хост-порт в local.setting.json. Ссылка на документ Microsoft 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 попадает туда с указанными выше настройками. Запуск CLI Azure Fucntion (func host start) из каталога bin правильно считывает номер порта.

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

Ответ 1

Обновление: если вы просто хотите изменить порт, вам не нужно устанавливать его через файл, указанный в вопросе. Проверьте Thuc Nguyen ответ

Оригинальный ответ:

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

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

enter image description here

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

Обновление для проекта функции .Net Core 2.0:

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

редактировать: слово

Ответ 2

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

host start --port 7074 --nodeDebugPort 5860

Ответ 3

  Правильный ответ для .NET Core 2.0/.NET Standard 2.0 проекта функций Azure в Visual Studio 2017, когда вы установили Azure Functions Core Tools 2.x Runtime через NPM

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

TL; DR;

Если вы использовали NPM для установки Azure Functions Core Tools 2.x Runtime, вам может потребоваться установить для параметров Project/Properties/Debug/Application Arguments значение.

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

Следует длинный ответ...

Моя настройка

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

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/

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

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

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

C:\Users\<myuserid>\AppData\Local\Azure.Functions.V2.Cli\2.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, начинает проявляться и локально.

Хорошо, теперь все время выполнения синхронизировано, пора заняться исправлением моей настоящей ошибки :)

Ответ 4

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

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

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

Ответ 5

Обновить свойства проекта → Отладить до следующего

запуск хоста --port 7073 --pause-on-error

enter image description here