C# Azure函数在我使用依赖项时停止工作,在本地工作
我正在尝试设置一个Azure函数,在消费模式下基于Linux,队列触发。 它在调试时在本地工作得很好(每个程序员都说),但在部署时什么也不会发生。我找不到任何日志 我重新开始,上传了一个空函数——它工作了,但当我添加自己的库时,它就停止了工作 然后我尝试删除我的库并重新上传“hello world”函数,但它仍然不起作用 这是host.json:C# Azure函数在我使用依赖项时停止工作,在本地工作,c#,azure-functions,azure-function-app,azure-functions-runtime,azure-storage-queues,C#,Azure Functions,Azure Function App,Azure Functions Runtime,Azure Storage Queues,我正在尝试设置一个Azure函数,在消费模式下基于Linux,队列触发。 它在调试时在本地工作得很好(每个程序员都说),但在部署时什么也不会发生。我找不到任何日志 我重新开始,上传了一个空函数——它工作了,但当我添加自己的库时,它就停止了工作 然后我尝试删除我的库并重新上传“hello world”函数,但它仍然不起作用 这是host.json: { "logging": { "fileLoggingMode": "always
{
"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()");
}
我做错了什么(或者在哪里可以找到日志?应用程序洞察是空的)?谢谢一两周前我遇到了同样的问题;我敢打赌问题出在你和队列的连接上。作为比较,这是我的(工作)队列触发器函数的完整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应用程序服务设置。在那里,您可以添加任何需要的连接字符串设置。如果需要指定存储帐户,则设置名称应为存储帐户的名称加上“\u storage”。例如,如果您的存储帐户名为MyVault,则设置的名称将为MyVault\u storage
在VS代码中,使用它有点不同。您必须查看Azure中的“功能”,然后确保选择了Azure订阅(而不是本地副本!),并深入到“功能”、“应用程序设置”中,您可以在其中添加/编辑
在Azure门户中,您可以管理应用程序设置
日志
在Azure门户中,首先转到功能应用程序。单击您的主函数名。现在,在该功能的新菜单下,在“功能”子菜单下,单击“功能”。现在,您将看到组成队列触发器函数的所有不同函数的列表。其中应该有EmailQueueWorker
——点击它。现在,您应该看到执行计数,您可以点击左侧菜单中的监视器,然后在中间区域登录。您可以根据需要启动/停止/清除
无论出于何种原因,我发现使用VisualStudio2019或VS代码流式传输实际日志数据比使用web控制台要快得多。web控制台有时似乎有点延迟。我在一两周前遇到了同样的问题;我敢打赌问题出在你和队列的连接上。作为比较,这是我的(工作)队列触发器函数的完整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应用程序服务设置。在那里,您可以添加任何需要的连接字符串设置。如果需要指定存储帐户,则设置名称应为存储帐户的名称加上“\u storage”。例如,如果您的存储帐户名为MyVault,则设置的名称将为MyVault\u storage
在VS代码中,使用它有点不同。您必须查看Azure中的“功能”,然后确保选择了Azure订阅(而不是本地副本!),并深入到“功能”、“应用程序设置”中,您可以在其中添加/编辑
在Azure门户中,您可以管理应用程序设置
日志
在Azure门户中,首先转到功能应用程序。单击您的主函数名。现在,在该功能的新菜单下,在“功能”子菜单下,单击“功能”。现在,您将看到组成队列触发器函数的所有不同函数的列表。其中应该有EmailQueueWorker
——点击它。现在,您应该看到执行计数,您可以点击左侧菜单中的监视器,然后在中间区域登录。您可以根据需要启动/停止/清除
无论出于何种原因,我发现使用VisualStudio2019或VS代码流式传输实际日志数据比使用web控制台要快得多。web控制台有时似乎有点延迟