尝试在开发计算机上运行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>
我所有的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" />
我已经尝试了在GitHub上阅读的以下内容为Azure功能打开的问题,但没有一个起作用:
答案 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。可能还有其他情况,但是考虑的方向是相似的。
希望有帮助。
原始答案:
我使用了与您相同的配置来创建功能,但是我没有遇到错误,因此我怀疑问题可能出在防火墙和虚拟网络的设置上。
侦听器无法访问存储帐户,尝试在代码中创建动态容器,并且应该遇到访问错误。