azure-iot-hub - 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
解决方案
因此,设法通过添加“使用 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}");
}
推荐阅读
- redis - Redis 集群:在不停机的情况下更换没有从属的故障主控
- javascript - 在javascript之前加载样式 - webpack 4
- fabricjs - 摆脱 Fabric.js 中的旋转控制
- android - 从 android 的自动完成地址搜索中删除“由 Google 提供支持”徽标
- javascript - 由于将服务注入服务 Angular 6 而导致的意外结果
- python - 从 hmm nltk 获取转移概率、发射(输出)概率和初始概率
- java - Java 创建一个虚拟(第二个)鼠标
- postgresql - 无法将 varchar(255) 转换为浮动
- python - 将密集向量的pyspark数据框列转换为numpy数组
- opencart2.x - Opencart 的扩展安装程序错误