关于.net核心应用程序的功能,我有两个问题。我正在使用blobtrigger。
1)当我在本地运行项目时,在命令提示符控制台上获得了这个“托管环境”,我想了解此变量集在哪里以及如何将其更改为开发。由于我只是在本地开发,因此会产生误导。
[5/23/2019 7:00:20 PM]主机启动(773毫秒) [5/23/2019 7:00:20 PM]工作主持人开始了 托管环境:生产 内容根路径:C:Myproject \ bin \ Debug \ netcoreapp2.1 现在收听:http://0.0.0.0:7071
2)host.json和local.settings.json有什么区别。什么时候可以使用host.json?到目前为止,我只使用过local.settings.json,当我发布到天蓝色时,我正在创建local.settings.json中提到的配置,但未使用Host.json的样子。 host.json文件的目的是什么。
答案 0 :(得分:0)
"ASPNETCORE_ENVIRONMENT": "Development"
,以更改托管环境:答案 1 :(得分:0)
控制台上的“托管环境”来自环境变量ASPNETCORE_ENVIRONMENT。如果未设置此变量,则默认为“生产”。
在此处设置:HostingEnvironment.cs
此github issue中描述了导致此默认值的原因。
此变量在dotnet核心Web应用程序中很流行,但是在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(滚动至该部分的末尾)
答案 2 :(得分:0)
有时,大多数时候,Microsoft做事的方式很奇怪...作为社区,我们必须要么找到解决方法,要么顺从。好吧,如果您是那些无法通过构想来遵循没有意义的东西的人之一,那么可以采取以下解决方案:
local.settings.json
{environment}.local.settings.json
,例如:development.local.settings.json
和production.local.settings.json
local.settings.json
再来一次:我们必须重复任务...
[
{
"label": "use development.local.settings.json",
"command": "cp development.local.settings.json local.settings.json",
"type": "shell",
"options": {
"cwd": "${workspaceFolder}/..."
}
},
{
"label": "use production.local.settings.json",
"command": "cp production.local.settings.json local.settings.json",
"type": "shell",
"options": {
"cwd": "${workspaceFolder}/..."
}
},
{
"label": "azure-func-development",
"type": "func",
"dependsOn": [
"use development.local.settings.json",
"build"
],
"dependsOrder": "sequence",
"options": {
"cwd": "${workspaceFolder}/.../bin/Debug/netcoreapp2.2"
},
"command": "host start",
"isBackground": true,
"problemMatcher": "$func-watch"
},
{
"label": "azure-func-production",
"type": "func",
"dependsOn": [
"use production.local.settings.json",
"build"
],
"dependsOrder": "sequence",
"options": {
"cwd": "${workspaceFolder}/.../bin/Debug/netcoreapp2.2"
},
"command": "host start",
"isBackground": true,
"problemMatcher": "$func-watch"
}
]
别累,我们还没有完成复制,但是...
允许重复launch.json
配置:
[
{
"name": "[Development] Attach to Azure .NET Functions",
"type": "coreclr",
"request": "attach",
"preLaunchTask": "azure-func-development",
"processId": "${command:azureFunctions.pickProcess}"
},
{
"name": "[Production] Attach to Azure .NET Functions",
"type": "coreclr",
"request": "attach",
"preLaunchTask": "azure-func-production",
"processId": "${command:azureFunctions.pickProcess}"
}
]