我正在使用Azure函數,嘗試使用輸出隊列來處理事情,但我一直運行時出現輸出綁定錯誤。我想知道這是否與我裝飾參數的方式有關?我已經看到如何使用單個隊列作爲返回值,但我需要有多個輸出隊列。Azure函數中的錯誤綁定字符串輸出隊列
函數定義:
using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Host; using Newtonsoft.Json; using Newtonsoft.Json.Linq;
namespace FunctionApp1 {
public static class TestItemAddQueueTrigger
{
[StorageAccount("AzureWebJobsStorage")]
[FunctionName("TestItemAddQueueTrigger")]
public static void Run([QueueTrigger("testitem-add")] string itemAdd,
TraceWriter log,
[Queue("testitem-added", Connection = "AzureWebJobsStorage")] out string itemAddedQueue)
{
dynamic message = JObject.Parse(itemAdd);
log.Info($"Received message\n{JsonConvert.SerializeObject(message, Formatting.Indented)}");
var itemAddedQueueMessage = new
{
};
itemAddedQueue = JsonConvert.SerializeObject(itemAddedQueueMessage);
log.Info($"Sent message to queue \"itemAddedQueue\"\n{JsonConvert.SerializeObject(itemAddedQueueMessage, Formatting.Indented)}");
}
} }
錯誤消息:
A ScriptHost error has occurred
[10/18/2017 4:31:27 PM] Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.TestItemAddQueueTrigger'. Microsoft.Azure.WebJobs.Host: Cannot bind parameter 'itemAddedQueue' to type String&. Make sure the parameter Type is supported by the binding. If you're using binding extensions (e.g. ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. config.UseServiceBus(), config.UseTimers(), etc.).
的NuGet出處:
Microsoft.NET.Sdk.Functions(1.0.6)Microsoft.Azure.WebJobs (2.1.0-beta4)Microsoft.Azure.WebJobs.Extensions(2.1.0-beta4)
Microsoft.Azure.WebJobs.Extensions.Http(1.0.0-BETA4)Newtonsoft.Json (9.0.1)System.ValueTuple(4.3.0)
項目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net47</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.6" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
解決方案文件:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27004.2002
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FunctionApp1", "FunctionApp1\FunctionApp1.csproj", "{10F86A7D-5E03-41A9-8BBB-103C8E06E059}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{10F86A7D-5E03-41A9-8BBB-103C8E06E059}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10F86A7D-5E03-41A9-8BBB-103C8E06E059}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10F86A7D-5E03-41A9-8BBB-103C8E06E059}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10F86A7D-5E03-41A9-8BBB-103C8E06E059}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {B0A27606-232E-4B58-9586-12AB68E9CAC0}
EndGlobalSection
EndGlobal
嘗試從'string'之前刪除'out':'[Queue(「testitem-added」,Connection =「AzureWebJobsStorage」)] string itemAddedQueue' –
您的代碼對我來說工作得很好。你參考哪個NuGet包? – Mikhail
@AndrésNava-.NET - 'out'關鍵字很重要。這是排隊函數('[Queue] out string')和觸發隊列消息('[QueueTrigger] string')之間的區別 –