首页 > 解决方案 > Azure 函数应用:“找不到 Microsoft.ServiceBus”

问题描述

我想使用 EventData 类从 iot 集线器读取事件消息,但我在下面不断收到关于添加命名空间 Microsoft.ServiceBus.Messaging 的错误

感谢任何帮助确定可能出现的问题?

#r "Newtonsoft.Json"
#r "Microsoft.ServiceBus" 


using System;
using Newtonsoft.Json.Linq;
using Microsoft.ServiceBus.Messaging;

public static void Run(EventData myIoTHubMessage, out object outDocument, ILogger log)
{

dynamic msg = JObject.Parse(myIoTHubMessage);
outDocument = new {msg}; 
log.LogInformation($"C# IoT Hub trigger function processed a message: {myIoTHubMessage}");
}

2020-06-06T23:05:31Z [错误] 函数编译错误 2020-06-06T23:05:31Z [错误] run.csx(8,24):错误 CS0246:类型或命名空间名称“EventData”不能找到(您是否缺少 using 指令或程序集引用?) 2020-06-06T23:05:31Z [错误] run.csx(4,17):错误 CS0234:类型或命名空间名称“ServiceBus”不存在于命名空间“Microsoft”(您是否缺少程序集引用?) 2020-06-06T23:05:31Z [Error] run.csx(2,1): error CS0006: Metadata file 'Microsoft.ServiceBus' could not be found 2020 -06-06T23:05:31Z [警告] 您可能错误地引用了 NuGet 包。了解更多:https ://go.microsoft.com/fwlink/?linkid=2091419

标签: azure-iot-hubazure-eventhubazure-function-app

解决方案


因此,设法通过添加“使用 Microsoft.Azure.EventHubs;”来完成这项工作。

下面的代码目前对我有用,但不确定最佳实践等......

为了弄清楚这一点,我返回并创建了一个新的 EventHub 触发器函数并从那里获取代码,因为模板已经包含使用 EventData 类的代码。不知道他们为什么不使用类似的模板和 IoT Hub 触发器?

#r "Newtonsoft.Json"
#r "Microsoft.Azure.EventHubs"


using System;
using System.Text;
using Newtonsoft.Json.Linq;
using Microsoft.Azure.EventHubs;

public static void Run(EventData myIoTHubMessage, out object outDocument, ILogger log)
{
   string messageBody = Encoding.UTF8.GetString(myIoTHubMessage.Body.Array, 
   myIoTHubMessage.Body.Offset, myIoTHubMessage.Body.Count);
   dynamic msg = JObject.Parse(messageBody);

   var deviceId = myIoTHubMessage.SystemProperties["iothub-connection-device-id"];
   var enqueuedtime = myIoTHubMessage.SystemProperties["iothub-enqueuedtime"];
   var messageSource = myIoTHubMessage.SystemProperties["iothub-message-source"];


   outDocument = new {msg, deviceId, enqueuedtime, messageSource}; 
   log.LogInformation($"C# IoT Hub trigger function processed a message {myIoTHubMessage}");
}

推荐阅读