Хостинговая среда, почему она установлена ​​в Production, Разница между host.json и local.settings.json - PullRequest
2 голосов
/ 24 мая 2019

У меня есть два вопроса о приложениях ядра .net для функций.Я использую blobtrigger.

1) Когда я запускаю свой проект локально, в консоли командной строки появляется «Среда хостинга», я хочу понять, где установлена ​​эта переменная и как я могу изменить ее на разработку.Это вводит в заблуждение, так как я работаю только локально.

[23.05.2009 19:00:20] Хост запущен (773 мс) [23.05.2009 7:00:20 PM] Хост работы запущен ХостингEnvironment: корневой путь к производственному контенту: C: Myproject \ bin \ Debug \ netcoreapp2.1. Теперь слушаем: http://0.0.0.0:7071

2) В чем разница между host.json и local.settings.json.Когда можно использовать host.json?До сих пор я использовал только local.settings.json, и когда я публикую в azure, я создаю конфигурации, упомянутые в local.settings.json, но Host.json не используется, похоже.Какова цель файла host.json.

Ответы [ 2 ]

3 голосов
/ 24 мая 2019

«Среда хостинга» на консоли происходит от переменной среды ASPNETCORE_ENVIRONMENT. Если эта переменная не установлена, по умолчанию используется «Производство».

Здесь установлено: HostingEnvironment.cs

Причина этого значения по умолчанию описана в этом выпуске github .

Эта переменная популярна в основных веб-приложениях dotnet, но она не упоминается в официальных документах функций Azure (я не знаю, почему). Если вы напишите цикл for и выведите все переменные среды на консоль из функции, вы обнаружите, что эта переменная не установлена ​​по умолчанию - ни в рабочей среде, ни при работе в Visual Studio.

Если вы хотите определить эту переменную локально, у вас есть несколько разных способов.

Установка переменной среды через командную строку:

setx ASPNETCORE_ENVIRONMENT "Development"

Определение этого в Properties \ launchSettings.json:

  "commandName": "Project",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }

Определение этого в local.settings.json:

  "Values": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }

Обратите внимание, что эта переменная не определяется автоматически для рабочей среды, когда вы публикуете свое приложение в Azure. Вам нужно будет определить эту переменную в «Конфигурация» -> «Настройки приложения» на портале Azure.

В функциях Azure, похоже, есть еще одна похожая переменная среды, которая называется AZURE_FUNCTIONS_ENVIRONMENT. Этот определяется по умолчанию локально.

AZURE_FUNCTIONS_ENVIRONMENT = Development

Это не определено в рабочей среде по умолчанию и может быть определено на портале Azure.

Разница между host.json и local.settings.json :

host.json - это настройка предопределенных параметров, которые понимает инфраструктура приложения. Это относится как к локальной, так и к производственной среде. Это не позволяет пользовательские настройки, хотя. local.settings.json, с другой стороны, полезен для определения пользовательских настроек. host.json используется для управления исходным кодом, но local.settings.json обычно не контролируется исходным кодом и считается хорошим местом для хранения секретов и строк подключения для разработки.

Подробнее о различиях: https://docs.microsoft.com/en-us/azure/azure-functions/functions-develop-vs#create-an-azure-functions-project (прокрутите до конца этого раздела)

host.json ссылка

local.settings.json ссылка

1 голос
/ 24 мая 2019
  1. Вы можете добавить "ASPNETCORE_ENVIRONMENT": "Development" в local.settings.json, чтобы изменить среду хостинга:

enter image description here

Как вы знаете, local.settings.json предназначен только для локального тестирования и не будет опубликован на портале Azure.Для host.json (который будет опубликован в Azure) вы можете настроить такие параметры, как loglevel (если вы хотите войти) на портале Azure.Подробнее, пожалуйста, обратитесь к этой статье host.json .
...