当我使用依赖项时,Azure函数停止工作,在本地工作

问题描述

我正在尝试设置Azure功能,基于消耗模式的Linux,已触发队列。 它在调试中可以完美地在本地工作(每个程序员都说过),但是在部署时什么也没有发生。我找不到任何日志。

我从头开始,上传一个函数-它起作用了,但是一旦我添加了自己的库,它就停止了工作。

然后我尝试删除我的库并重新上载“ hello world”功能,但该功能仍然无效。

这是host.json:

   {
  "logging": {
    "fileLoggingMode": "always","logLevel": {
      "default": "@R_510_4045@ion","Host.Results": "@R_510_4045@ion","Function": "@R_510_4045@ion","Host.Aggregator": "@R_510_4045@ion"
    },"applicationInsights": {
      "samplingExcludedTypes": "Request","samplingSettings": {
        "isEnabled": true
      }
    },"console": {
      "isEnabled": "true"
    }
  },"Values": {
    "AzureWebJobsstorage": "DefaultEndpointsProtocol=https;AccountName=****;AccountKey=*****;BlobEndpoint=https://***.blob.core.windows.net/;TableEndpoint=https://*****.table.core.windows.net/;QueueEndpoint=https://****.queue.core.windows.net/;FileEndpoint=https://****.file.core.windows.net/","FUNCTIONS_WORKER_RUNTIME": "dotnet"
  },"version": "2.0"
}

功能代码(没有我的库)仅在第一次上传时有效。

[FunctionName("EmailQueueWorker")]
        //public static async Task Run(
        public static async Task Run(
            [QueueTrigger(queueName: "email",Connection = "AzureWebJobsstorage")] string queueItem,ILogger log
        )
        {
            log.LogWarning("Start run()");
        }

我在做什么错(或者在哪里可以找到日志?Application Insights为空)?谢谢

解决方法

我在一两个星期前遇到了同样的问题;我敢打赌,问题是您与队列的连接。为了进行比较,这是我(工作)队列触发函数的完整完整host.json:

{
    "version": "2.0","logging": {
        "applicationInsights": {
            "samplingSettings": {
                "isEnabled": true
            }
        },"fileLoggingMode": "always","logLevel": {
            "default": "Information","Host.Results": "Error","Function": "Trace","Host.Aggregator": "Trace"
        }
    }
}

连接字符串

我们的logLevel部分有所不同,您会注意到那里没有任何连接字符串。我对Azure还是一个陌生的人,但是据我了解,那不是他们要去的地方。

在Visual Studio 2019中,右键单击项目,然后单击发布。在“操作”下,单击“管理Azure App Service设置”。在这里,您可以添加任何需要的连接字符串设置。如果需要指定存储帐户,则设置名称应为该存储帐户的名称加“ _STORAGE”。例如,如果您的存储帐户名为 MyVault ,则设置的名称将为MyVault_STORAGE

在VS Code中,这有点不同。您必须在“功能”下查看“ Azure”,然后确保选择“ Azure订阅”(而不是本地副本!),并深入到功能“应用程序设置”中,您可以在其中添加/编辑。

在Azure门户中,您可以管理应用设置this way

日志

在Azure门户中,首先转到Function App。单击您的主要功能名称。现在,在该功能的新菜单下的“功能”子菜单下,单击“功能”。现在,您将看到构成队列触发功能的所有不同功能的列表。其中应该是EmailQueueWorker-单击它。现在,您应该看到执行计数,可以单击左侧菜单中的Monitor,然后单击中间区域的Logs。您可以根据需要启动/停止/清除。

无论出于何种原因,我发现使用Visual Studio 2019或VS Code而不是Web控制台流式传输时,看到实际日志数据的速度要快得多。 Web控制台有时有时会有点延迟。