Как запустить приложение 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
Следует длинный ответ...
Моя настройка
Во время этого упражнения мои настройки полностью обновлены (на момент написания) и следующие:
- Visual Studio 2017 Professional: 15.6.2
- Функции Azure и веб-инструменты работы: 15.0.40215.0
- Windows 10 10.0.16299 Build 16299
Основные инструменты функций Azure (устанавливаемые в соответствии с документом по разработке и запуску функций Azure локально от Microsoft) (в Git Bash):
[email protected] ~
$ 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/
Это само по себе не может быть проблемой, но меня раздражают проблемы типа "работает на моей машине, не удается опубликовать на лазурном", поэтому я хочу убедиться, что локальное выполнение использует те же функции времени выполнения, что и лазурный (т.е. 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]()