首页 > 解决方案 > 函数“my-function”的侦听器无法在 Azure Functions 中启动错误消息

问题描述

尝试在我的开发机器上运行我的 Azure Functions 时收到以下错误消息:

[12/28/2019 12:06:48 AM] The listener for function 'my-function' was unable to start.
[12/28/2019 12:06:48 AM] The listener for function 'my-function' was unable to start. Microsoft.WindowsAzure.Storage: Value cannot be null. (Parameter 'connectionString').

这是我的 local.settings.json 文件的内容:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  }
}

当我删除/重命名我的 local.settings.json 文件时,我收到一条完全不同的错误消息,这让我相信它正在识别和读取文件。

我正在使用 v3 的 Azure Functions,并在我的 csproj 文件中设置了以下内容:

<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>

我所有的 NuGet 包都在运行最新版本:

<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="3.0.10" />
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.2" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.7.0" />

我已经尝试了以下我在为 Azure Functions 打开的 GitHub 问题中阅读的内容,但没有一个有效:

  1. 添加 AzureWebJobsStorage 作为环境变量。
  2. 添加带有 AzureWebJobsStorage 密钥的 appsettings.json 文件。

标签: azure-functions

解决方案


更新:

是的,如果您使用本地虚拟化存储模拟器,那么您的连接字符串是正确的。

如果您的防火墙限制 func 访问存储帐户,则可能会报告此错误。防火墙是监听器无法访问虚拟存储模拟器的原因之一。

尝试禁用防火墙,看看是否能解决问题。

当然,也有可能是 Storage Emulator 服务没有打开。尝试输入

"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" status

在cmd中检查状态。

如果返回 false,请输入以下命令以启动 Storage Emulator:

"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" init
"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" start

总结一下:

此类问题通常有三种可能的原因。

1.连接字符串错误阻止连接,

2.防火墙设置

3.部分服务未开启。

除了这三点之外,似乎也有类似的问题可以通过将相同的代码复制到一个新项目中来解决。看看这个

出现这个问题的原因其实是func监听器无法监听Storage。解决方法是考虑是什么原因导致func无法监听Storage。可能还有其他情况,但考虑的方向是类似的。

希望能帮助到你。


原答案:

我使用与您相同的配置创建Function,但我没有遇到错误,因此我怀疑问题可能来自防火墙和虚拟网络的设置。

监听器无法访问 Storage Account,尝试在您的代码中创建动态容器,您应该会遇到访问错误。


推荐阅读