0

该应用程序使用模拟器在我的本地完美运行。但是当我部署到天蓝色来测试它时,我在日志上得到了这个错误。我只有一个功能,即时间触发器。

[10/12/2021 02:32:22 > 79e06d: INFO] 函数“DoWork”的侦听器无法启动。[10/12/2021 02:32:22 > 79e06d:INFO] Microsoft.Azure.WebJobs.Host.Listeners.FunctionListenerException:函数“DoWork”的侦听器无法启动。[10/12/2021 02:32:22 > 79e06d:INFO] ---> System.Threading.Tasks.TaskCanceledException:任务已取消。[10/12/2021 02:32:22 > 79e06d: INFO] 在 Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteAsync[T](RESTCommand`1 cmd、IRetryPolicy 策略、OperationContext operationContext、CancellationToken 令牌)

我的 appsettings 上有这些

“AzureWebJobsStorage”:“UseDevelopmentStorage=true”,“FUNCTIONS_WORKER_RUNTIME”:“dotnet”,

4

1 回答 1

0

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

{
    "AzureWebJobsStorage": "UseDevelopmentStorage=true", 
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
}

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

在本地运行函数时,除http trigger外的所有trigger都需要使用Storage Emulator。如果防火墙限制侦听器对虚拟存储的访问,则在执行功能时可能会出现问题。这就是为什么使用 http 触发器不会出错的原因,因为它不使用虚拟存储模拟器。

尝试禁用防火墙,看看是否能解决问题,在 cmd 中尝试以下语句检查状态

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

如果返回 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. 有些服务没有打开。尝试将相同的代码复制到不同的位置。

安装并运行 Azure 存储模拟器 5.2 或更高版本。使用真实的 Azure 存储连接字符串更新 local.appsettings.json 文件。

 {
    "AzureWebJobsStorage": "copy the string in the config function on azure",           
 }
于 2021-10-13T10:05:17.280 回答