Я разрабатываю приложение, в котором устройства IOT подключены к Azure IOT Hub. и его данные в реальном времени могут быть видны в веб-представлении. Тем не менее, я сталкиваюсь с ошибкой, я пытаюсь связать функцию data Azure с SignalR, но когда я запускаю приложение, я получаю следующее сообщение об ошибке.
Не удалось запустить прослушиватель для функции 'SignalR'. Microsoft. Azure .EventHubs.Processor: Обнаружена ошибка при получении списка EventHub PartitionIds. System.Private.CoreLib: адрес ссылки '$ management' не соответствует ни одному из ожидаемых форматов.
Ошибка Описание Изображение
Я пробовал все, чтобы исправить это, но не каждый раз. Буду очень признателен, если кто-нибудь поможет мне найти решение этой проблемы.
Вот скрипт, который я использую по этой ссылке
Вот мой SignalR.cs class
public static class SignalR
{
[FunctionName("SignalR")]
public static async Task Run(
[IoTHubTrigger("messages/events", Connection = "IoTHubTriggerConnection", ConsumerGroup = "$Default")]EventData message,
[SignalR(HubName = "broadcast")]IAsyncCollector<SignalRMessage> signalRMessages,
ILogger log)
{
var deviceData = JsonConvert.DeserializeObject<DeviceData>(Encoding.UTF8.GetString(message.Body.Array));
deviceData.DeviceId = Convert.ToString(message.SystemProperties["iothub-connection-device-id"]);
log.LogInformation($"C# IoT Hub trigger function processed a message: {JsonConvert.SerializeObject(deviceData)}");
await signalRMessages.AddAsync(new SignalRMessage()
{
Target = "notify",
Arguments = new[] { JsonConvert.SerializeObject(deviceData) }
});
}
}
Вот мой SignalRConnection.cs class
public static class SignalRConnection
{
[FunctionName("SignalRConnection")]
public static SignalRConnectionInfo Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
[SignalRConnectionInfo(HubName = "broadcast")] SignalRConnectionInfo info,
ILogger log) => info;
}
Вот мой local.settings. json file
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"AzureSignalRConnectionString": "",
"MSDEPLOY_RENAME_LOCKED_FILES": 1,
"IoTHubTriggerConnection": ""
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*"
}
}
для IoTHubTriggerConnection, я использую строку подключения iothubjohnsoncontrol (показана на рисунке ниже).
Изображение ключей концентратора IOT
для AzureSignalRConnectionString, я использую строку подключения signalrjohnsoncontrol (показана на рисунке ниже).
Изображение ключей SignalR