diff --git a/edge-modules/functions/binding/src/Microsoft.Azure.WebJobs.Extensions.EdgeHub/EdgeHubTriggerBindingProvider.cs b/edge-modules/functions/binding/src/Microsoft.Azure.WebJobs.Extensions.EdgeHub/EdgeHubTriggerBindingProvider.cs index 44a82cd0b7e..502cfa4b5b7 100644 --- a/edge-modules/functions/binding/src/Microsoft.Azure.WebJobs.Extensions.EdgeHub/EdgeHubTriggerBindingProvider.cs +++ b/edge-modules/functions/binding/src/Microsoft.Azure.WebJobs.Extensions.EdgeHub/EdgeHubTriggerBindingProvider.cs @@ -7,6 +7,7 @@ namespace Microsoft.Azure.WebJobs.Extensions.EdgeHub using System.Reflection; using System.Threading.Tasks; using Microsoft.Azure.Devices.Client; + using Microsoft.Azure.WebJobs.Host; using Microsoft.Azure.WebJobs.Host.Triggers; /// @@ -14,11 +15,17 @@ namespace Microsoft.Azure.WebJobs.Extensions.EdgeHub /// It's TryCreateAsync method is called by the runtime for all job parameters, giving it a chance to return a binding. /// Please see Trigger Binding Extensions /// - class EdgeHubTriggerBindingProvider : ITriggerBindingProvider + public class EdgeHubTriggerBindingProvider : ITriggerBindingProvider { + readonly INameResolver nameResolver; readonly ConcurrentDictionary> receivers = new ConcurrentDictionary>(); ModuleClient moduleClient; + public EdgeHubTriggerBindingProvider(INameResolver nameResolver) + { + this.nameResolver = nameResolver; + } + public async Task TryCreateAsync(TriggerBindingProviderContext context) { if (context == null) @@ -33,13 +40,15 @@ public async Task TryCreateAsync(TriggerBindingProviderContext return null; } + var inputName = (this.nameResolver?.ResolveWholeString(attribute.InputName) ?? attribute.InputName).ToLowerInvariant(); + await this.TrySetEventDefaultHandlerAsync(); var messageProcessor = new EdgeHubMessageProcessor(); var triggerBinding = new EdgeHubTriggerBinding(context.Parameter, messageProcessor); this.receivers.AddOrUpdate( - attribute.InputName.ToLowerInvariant(), + inputName, // The function used to generate a value for an absent. // Creates a new List and adds the message processor (k) => new List() @@ -70,8 +79,10 @@ async Task TrySetEventDefaultHandlerAsync() async Task FunctionsMessageHandler(Message message, object userContext) { + var inputName = message.InputName.ToLowerInvariant(); byte[] payload = message.GetBytes(); - if (this.receivers.TryGetValue(message.InputName.ToLowerInvariant(), out IList functionReceivers)) + + if (this.receivers.TryGetValue(inputName, out IList functionReceivers)) { foreach (EdgeHubMessageProcessor edgeHubTriggerBinding in functionReceivers) { diff --git a/edge-modules/functions/binding/src/Microsoft.Azure.WebJobs.Extensions.EdgeHub/Microsoft.Azure.WebJobs.Extensions.EdgeHub.csproj b/edge-modules/functions/binding/src/Microsoft.Azure.WebJobs.Extensions.EdgeHub/Microsoft.Azure.WebJobs.Extensions.EdgeHub.csproj index 5e4732d8065..7836f73f886 100644 --- a/edge-modules/functions/binding/src/Microsoft.Azure.WebJobs.Extensions.EdgeHub/Microsoft.Azure.WebJobs.Extensions.EdgeHub.csproj +++ b/edge-modules/functions/binding/src/Microsoft.Azure.WebJobs.Extensions.EdgeHub/Microsoft.Azure.WebJobs.Extensions.EdgeHub.csproj @@ -34,7 +34,7 @@ - +