我有一个Azure功能,我需要通过IoT Hub将消息发送回我的设备。 每次我尝试添加声明:
using Microsoft.Azure.Devices;
我收到以下错误:
run.csx(11,23):错误CS0234:类型或命名空间名称'设备'名称空间中不存在Microsoft.Azure' (你错过了一个程序集引用吗?)
但奇怪的是,如错误所示,如果我只是去using Microsoft.Azure
,则没有编译错误。
所以我尝试使用带有我的代码的设备,例如static Devices.ServiceClient client;
,但同样的错误。
我也尝试过使用#r "Microsoft.Azure.Devices
,但这也不起作用。
我尝试完全创建一个新的Function App服务,但同样的错误一直在弹出。
我的project.json文件看起来像这样:
{
"frameworks": {
"net47":{
"dependencies": {
"Microsoft.Azure.Devices": "1.4.1"
}
}
}
}
我也尝试使用net46
。
我的应用程序的小描述:
所以我的函数应该由ServiceBusTopic
触发,有一个BlobStorage
作为输入。
我不知道如果没有添加此命名空间,我将如何将数据发送回我的设备。
答案 0 :(得分:0)
以下是使用 Microsoft.Azure.Devices nuget包的工作示例。触发器是 ServiceBusQueue , blobName 是BrokeredMessage的应用程序属性。
run.csx:
using System;
using System.Text;
using System.Configuration;
using System.Threading.Tasks;
using Microsoft.Azure.Devices;
public static async Task Run(string inputMessage, string inputBlob, TraceWriter log)
{
log.Info($"C# ServiceBus queue trigger function processed message: {inputMessage}");
log.Info($"Blob:\n{inputBlob}");
string deviceId = "Device10";
var c2dmsg = new Microsoft.Azure.Devices.Message(Encoding.ASCII.GetBytes(inputMessage));
// create proxy
string connectionString = ConfigurationManager.AppSettings["myIoTHub2"];
var client = ServiceClient.CreateFromConnectionString(connectionString);
// send AMQP message
await client.SendAsync(deviceId, c2dmsg);
await client.CloseAsync();
}
function.json:
{
"bindings": [
{
"name": "inputMessage",
"type": "serviceBusTrigger",
"direction": "in",
"queueName": "function",
"connection": "myServiceBus",
"accessRights": "Manage"
},
{
"type": "blob",
"name": "inputBlob",
"path": "afstates/{Properties.blobName}",
"connection": "myStorage",
"direction": "in"
}
],
"disabled": false
}
project.json:
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.Azure.Devices": "1.4.1"
}
}
}
}
请尝试以下步骤:
观察日志进度。