首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主机环境为什么被设置为生产,host.json和local.settings.json之间的区别

主机环境为什么被设置为生产,host.json和local.settings.json之间的区别
EN

Stack Overflow用户
提问于 2019-05-23 21:39:57
回答 3查看 7.9K关注 0票数 9

关于函数的.net核心应用程序,我有两个问题。我用的是闪光灯。

1)当我在本地运行我的项目时,我在命令提示符控制台上获得了这个‘宿主环境’,我想了解这个变量集在哪里,以及如何将它更改为开发。这让人产生误解,因为我只是在本地发展。

5/23/2019 7:00:20下午主机启动(773 On) 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,当我发布到azure时,我正在创建local.settings.json中提到的配置,但是没有使用Host.json,它看起来像。host.json文件的用途是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-24 02:54:29

控制台上的“宿主环境”来自环境变量ASPNETCORE_ENVIRONMENT。如果未设置此变量,则默认为"Production“。

设置在这里:HostingEnvironment.cs

此默认设置背后的原因在此github问题中描述。

这个变量在dotnet核心web应用程序中很流行,但在Azure函数的官方文档中却没有提到它(我不知道为什么)。如果编写for循环并从函数中输出所有要控制台的环境变量,则会发现默认情况下没有设置此变量--无论是在生产中还是在Visual中运行时。

如果希望在本地定义此变量,则有几种不同的方法。

通过命令行设置环境变量:

代码语言:javascript
复制
setx ASPNETCORE_ENVIRONMENT "Development"

在Properties\launchSettings.json:中定义这一点的

代码语言:javascript
复制
  "commandName": "Project",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }

在local.settings.json:中定义了这一点

代码语言:javascript
复制
  "Values": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }

请注意,当您将应用程序发布到azure时,此变量不会自动定义为生产。您必须在Azure门户中的"Configuration“-> "Application Settings”中定义此变量。

在azure函数中,似乎存在另一个类似的环境变量,名为AZURE_FUNCTIONS_ENVIRONMENT。在默认情况下,这个是本地定义的。

代码语言:javascript
复制
AZURE_FUNCTIONS_ENVIRONMENT = Development

默认情况下,这在生产中没有定义,可以在azure门户中定义。

与host.json和local.settings.json的差异

host.json将配置应用程序基础设施所能理解的预定义设置。它既适用于本地环境,也适用于生产环境。但它不允许自定义设置。另一方面,local.settings.json对于定义自定义设置很有用。host.json被提交到源代码管理中,但是local.settings.json通常被排除在源代码管理之外,并且被认为是存储用于开发的秘密和连接字符串的良好位置。

更多关于差异的详细信息:https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs#create-an-azure-functions-project (滚动到该部分的末尾)

host.json参考

local.settings.json参考

票数 14
EN

Stack Overflow用户

发布于 2019-05-24 01:47:32

  1. 您可以在"ASPNETCORE_ENVIRONMENT": "Development"中添加local.settings.json,以更改宿主环境:

  1. 如您所知,local.settings.json只是用于本地测试,不会发布到azure门户。对于host.json(将发布到azure),可以在azure门户中配置日志级别(如果您想登录的话)之类的设置。更多细节,请参考host.json的这篇文章。
票数 3
EN

Stack Overflow用户

发布于 2019-09-15 13:01:51

有时候,大多数时候,微软有着奇怪的做事方式.作为社会的一部分,我们要么找到绕过他们的方法,要么顺从他们。好吧,如果你是那些无法接受这种想法的人之一,那么下面是一个解决方案:

  1. 删除local.settings.json
  2. 创建两个文件(或多个文件,每个文件用于您的环境),并将它们命名为{environment}.local.settings.json (例如:development.local.settings.jsonproduction.local.settings.json )
  3. 创建一个任务将当前环境文件复制到local.settings.json

又来了:我们得重复任务.

代码语言:javascript
复制
[
  {
    "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配置:

代码语言:javascript
复制
[
  {
    "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}"
  }
]
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56283270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档