函数“ my-function”的侦听器无法启动Azure Functions

时间:2019-12-28 00:18:18

标签: azure-functions

尝试在开发计算机上运行Azure功能时,出现以下错误消息:

[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文件时,我收到了完全不同的错误消息,这使我相信它正在识别并读取文件。

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

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

我所有的Nu​​Get软件包都运行最新版本:

<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" />

我已经尝试了在GitHub上阅读的以下内容为Azure功能打开的问题,但没有一个起作用:

  1. 添加AzureWebJobsStorage作为环境变量。
  2. 使用AzureWebJobsStorage密钥添加一个appsettings.json文件。

1 个答案:

答案 0 :(得分:0)

更新:

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

如果您的防火墙限制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。某些服务未打开。

除了这三点之外,通过将相同的代码复制到新项目中似乎还解决了类似的问题。看看this

此问题的原因实际上是func侦听器无法侦听Storage。解决方案是考虑是什么导致func无法监听Storage。可能还有其他情况,但是考虑的方向是相似的。

希望有帮助。


原始答案:

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

侦听器无法访问存储帐户,尝试在代码中创建动态容器,并且应该遇到访问错误。