我正在使用Visual Studio创建一个简单的队列触发的Azure函数。我正在将其与我的存储帐户相关联,但是由于某种原因它无法正常工作。任何帮助表示赞赏。
这是我的代码:(由VS自动生成)
[FunctionName("QueueTest")]
public static void Run([QueueTrigger("my-queue", Connection = "")]string myQueueItem, TraceWriter log)
{
log.Info($"C# Queue trigger function processed: {myQueueItem}");
}
这是我的local.settings.json
{
"IsEncrypted": false,
"Values":{
"AzureWebJobsStorage":"DefaultEndpointsProtocol=https;AccountName=accountname;AccountKey=accountkey"
}
}
答案 0 :(得分:2)
所以我找出了问题所在。所有配置都很好。问题是,我的功能应用程序的Azure Function版本为1,但是由于某些原因(可能是由于最新的SDK / WebJobs),版本1无法正常工作。因此,我不得不使用AzureFunctionVersion 2创建另一个功能应用程序,并且一切正常。
答案 1 :(得分:1)
您需要将队列存储帐户的连接字符串添加到local.settings.json,然后提供连接字符串的名称作为QueueTrigger的Connection参数,例如在local.settings.json
中"Values": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=accountname;AccountKey=accountkey",
"MyStorage": "DefaultEndpointsProtocol=https;AccountName=accountname2;AccountKey=accountkey2;EndpointSuffix=core.windows.net"
}
以及您的代码
[QueueTrigger("my-queue", Connection = "MyStorage")]string myQueueItem
答案 2 :(得分:0)
默认情况下,队列触发器使用AzureWebJobsStorage
帐户。您所需要做的就是从属性中删除Connection
参数:
[FunctionName("QueueTest")]
public static void Run([QueueTrigger("my-queue")]string myQueueItem, TraceWriter log)
{
log.Info($"C# Queue trigger function processed: {myQueueItem}");
}
理想情况下,如果您是Windows
用户,请使用Azure Storage Emulator连接到本地队列。然后在您的local.settings.json
文件中更改连接字符串:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true",
}
}
如果您不是Windows用户,则必须连接到Azure平台上托管的队列。为此,找到链接到您的功能的存储帐户,然后从其设置中复制连接字符串(存储帐户->访问密钥->连接字符串)