Visual Studio 2017中 local.setings.json 本地开发中的 AzureWebJobStorage 缺少值

我正在本地开发一个蔚蓝色的函数,并打开了 Storage 模拟器和 de Storage Explorer。

文件树

File tree

本地设置 json

{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true"
},
"ConnectionStrings": {
"PlantaoEntities": {
"ConnectionString": "CENSORED",
"ProviderName": "System.Data.EntityClient"
}
}
}

但 a 在尝试运行代码时会收到以下消息:

Local.setings.json 中的 AzureWebJobStorage 缺少值。这是 HTTP 以外的所有触发器所必需的。你可以运行“ func Azure function app get-app-tings”或者在 local.setings.json 中指定一个连接字符串

在重建解决方案出现之前,它一直在工作,如果我尝试 func azure functionapp fetch-app-settings <functionAppName>,它会尝试从天蓝色的入口自身获取信息。

91104 次浏览

解决方案是右键单击 local.setings.json,转到 属性,将“复制到输出目录”从“不复制”更改为 “始终复制”。现在,当从 在 VisualStudio2017中。

Https://github.com/azure/azure-functions-core-tools/issues/223#issuecomment-326225219

当我在我的 Visual Studio 2019中运行我的 Azure Function时,我得到了相同的错误。

enter image description here

我已经将 Copy To Output Directory操作设置为 Copy always,但仍然得到相同的错误。问题是 Azure 函数 local.settings.json文件不支持 nested json。您可以跟踪这个问题 给你

如前所述,我在 local.settings.json中有值。

{
"IsEncrypted": false,
"Values": {
"Custom": {
"Tickets": {
"Channels": [
"One",
"Two"
]
}
},
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"ServiceBusConnectionString": ""
}
}

正如您可以看到的,Value 内部有一个额外的嵌套 json (Custom)对象,这就是我得到这个错误的原因。为了解决这个问题,我必须添加一个名为 configuration.json的新配置文件,并在其中添加自定义值。

"Custom": {
"Tickets": {
"Channels": [
"One",
"Two"
]
}
}

修复方法是使用 ConfigurationBuilder或使用 File.ReadAllText读取该文件。您还可以将整个 JSON 作为一个普通字符串添加到 local.settings.json中,而不是一个 JSON 对象。

希望能有帮助。

对于那些因为没有嵌套 JSON 并且 <ItemGroup>值正确而遇到这个问题并感到困惑的人来说,这可能会对你有所帮助。因为忽略了 local.settings.json,所以我使用文件系统复制了一个,尽管 Visual Studio for Mac 在解决方案资源管理器中显示了它,但是无论我将 <CopyToOutputDirectory>更改为什么,它显然都没有接收到。在关闭并重新打开我的解决方案之后,这个问题就消失了。

仅供参考,当 "AzureWebJobsStorage"的值实际上为空("")时,也会出现这个错误。您可以将其设置为例如 "UseDevelopmentStorage=true"以进行开发。

请注意,这需要在本地安装存储模拟器。

刚刚在 VS2019上看到了这个错误,并通过重新排序 local.setings.json 解决了这个错误,这样 IsEncrypted 值就位于“ Value”之后

{
"Values": {
"AzureWebJobsStorage": "removed",
},
"IsEncrypted": false
}

当您的 local.settings.json文件有一个 json 错误时,也会出现相同的错误,例如,以下是逗号 ,,

如果上面的任何一个解决方案都不适用于那些需要在 local.setings.JSON 中嵌套 JSON 的人,那么只需将嵌套对象按如下方式展开:

这个:

"Config": {
"MyCusomValue": "Value"
}

成为:

"Config:MyCustomValue": "Value"

对我来说,我发现这个文件是非常挑剔的,所以我设置它回到它是由 VS2019创建的方式,并添加了我自己的配置,如上所述。

更新下面的本地设置

{
"Values":
{
"AzureWebJobsStorage": "DefaultEndpointsProtocol=`connection string of a blob storage`",
"FUNCTIONS_WORKER_RUNTIME": "python"
},
"IsEncrypted": false
}

连接样本

string=https;AccountName=xxx;AccountKey=xxxxxxx==;EndpointSuffix=core.windows.net

对我来说,我的一个值缺少一个结束语。我一修好它,一切都正常了。

解决方案-Azure 函数 Node.js/Type 脚本(VSCODE)

此解决方案适用于本地开发。请注意,这需要本地安装存储模拟器。请参阅 医生

1)从项目根目录打开 local.settings.json并将 AzureWebJobsStorage值从 ""更新到 UseDevelopmentStorage=true

例子: "AzureWebJobsStorage": "UseDevelopmentStorage=true",

2)重启功能应用程式

示例 local.seting.json

{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true"
"FUNCTIONS_WORKER_RUNTIME": "node",
"AZURE_STORAGE_CONNECTION": "Optional_your_remote_storage_string_in_azure"
"AZURE_STORAGE_CONTAINER_NAME": "optional_remote_container_name"
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*",
"CORSCredentials": false
}
}

我只是在 Intellij Ideas 上遇到了同样的问题(不想在 VSCode 上继续下去)。 我只需要根据我的系统下载 Azure Core 工具(Windows,由客户端强制-_ -) :

Https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local?tabs=windows%2ccsharp%2cbash

然后编辑启动配置,添加应用程序设置键:

AzureWebJobsStorage

应用程序设置值:

UseDevelopmentStorage=true

玩得开心。

我知道这个问题与 VisualStudio 有关,但是我可以通过在 VisualStudio 代码中执行以下操作来修复这个错误:

  1. 安装“ Azurite”扩展
  2. F1键并键入 开始
  3. 像往常一样调试你的 Azure 函数(按 F5)

有关详细信息,请参阅 天青石的官方文件

我最后修复了这个问题,这是因为您的配置文件,如 local.setings.json 或 appsetings.json 显示任何警告消息,那么它将无法加载设置。

还有一个问题:

如果文件 local.settings.json的拼写错误,VisualStudio 将无法找到它,但报告未提供值。

如果在设置中声明字符串数组,也可能发生这种情况,因为它不受支持。我有这样的东西:

{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true"
"FUNCTIONS_WORKER_RUNTIME": "node",
"AZURE_STORAGE_CONNECTION": "Optional_your_remote_storage_string_in_azure"
"AZURE_STORAGE_CONTAINER_NAME": "optional_remote_container_name",
"AllowedTypesToProcess":
[
"MyType1",
"MyType2",
"MyType3"
]
},
"Host": {
"LocalHttpPort": 7071
}
}

由于不支持数组,因此无法加载设置,但错误是“ Local.setings.json 中的 AzureWebJobStorage 缺少值”

如果您需要一个设置数组,请查看以下内容: https://www.titanwolf.org/Network/q/9256d500-5dbc-4375-851d-4d6f13928945/y

我的案例的解决方案是我选择了错误的 Azure 函数项目。 确保您选择了正确的启动项目。

我通过确保 connection的值以 _STORAGE结束来使我的值工作。

function.json

{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "blob",
"type": "blobTrigger",
"direction": "in",
"path": "container/{name}",
"connection": "mystorage_STORAGE"
}
]
}

local.settings.json

{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "python",
"FUNCTIONS_EXTENSION_VERSION": "~4",
"WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyy==;",
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyy==;",
"mystorage_STORAGE": "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyy==;"
},
"ConnectionStrings": {}
}

我遵循这个原则,它是有效的:

修改你的.csproj 文件:

<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>

有关详情,请浏览以下连结: Https://www.koskila.net/how-to-fix-missing-value-for-azurewebjobsstorage-in-local-settings-json-when-youre-debugging-azure-functions-locally/