【问题标题】:Azure Function stops working when I use dependencies, works locally当我使用依赖项时 Azure Function 停止工作,在本地工作
【发布时间】:2020-09-18 12:03:04
【问题描述】:

我正在尝试设置 Azure 函数,基于 Linux 的消费模式,已触发队列。 它在调试时在本地完美地工作(每个程序员都说过),但是在部署时没有任何反应。我找不到任何日志。

我重新开始,上传了一个空函数 - 它可以正常工作,但是一旦我添加了我自己的库,它就停止了工作。

然后我尝试删除我的库并重新上传“hello world”功能,但它仍然不起作用。

这是host.json:

   {
  "logging": {
    "fileLoggingMode": "always",
    "logLevel": {
      "default": "Information",
      "Host.Results": "Information",
      "Function": "Information",
      "Host.Aggregator": "Information"
    },
    "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 是空的)?谢谢

【问题讨论】:

    标签: c# azure-functions azure-function-app azure-functions-runtime azure-storage-queues


    【解决方案1】:

    我在一两周前遇到了同样的问题;我敢打赌,问题在于您与队列的连接。作为比较,这是我的(工作)队列触发函数的完整 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 应用服务设置。在那里,您可以添加任何需要的连接字符串设置。如果需要指定存储帐户,设置名称应为存储帐户名称加上“_STORAGE”。例如,如果您的存储帐户名为 MyVault,则设置的名称将为 MyVault_STORAGE

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

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

    日志

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 2018-03-10
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多