函数的侦听器无法启动。 Azure功能应用程序时间触发

时间:2019-11-25 06:51:26

标签: c# azure-functions

在本地环境中从Visual Studio运行azure函数时遇到以下错误:

  

函数“ Function1”的侦听器无法启动。 Microsoft.WindowsAzure.Storage:错误的请求。

这是我的代码

using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace FunctionApp3
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
        }
    }
}

配置(即local.settings.json)

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

但是当我设置一个http触发功能应用程序时,它工作正常。

3 个答案:

答案 0 :(得分:2)

更新:

由于您使用的是本地虚拟化存储仿真器,因此您的连接字符串正确。

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

在本地运行该功能时,除httptrigger之外的所有触发器都需要使用Storage Emulator。如果防火墙限制了侦听器对虚拟存储的访问,则执行功能时可能会出现问题。因此,httptrigger不会出现错误,因为它不使用虚拟存储模拟器。

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

当然,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可以为您提供帮助。

答案 1 :(得分:1)

如果在 Visual Studio Code 中出现这种情况,可能是因为本地模拟器没有启动。

在 VS Code 中安装 Azurite 插件,然后启动它。 enter image description here

https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azurite?toc=/azure/storage/blobs/toc.json

要启动模拟器,请在 Visual Studio Code 中按 F1 打开命令面板,然后执行以下命令。

Azurite: Clean

enter image description here

答案 2 :(得分:0)

我发现问题在于我在另一个驱动器中运行了 Azure 存储模拟器,然后我有了我的项目。即模拟器在 C:\Emulator 上运行,而项目在 S:\MyFunction 上本地运行