Слушатель для функции 'SignalR' не смог запуститься. Azure функция связывания с сигнализатором - PullRequest
2 голосов
/ 21 февраля 2020

Я разрабатываю приложение, в котором устройства 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

1 Ответ

0 голосов
/ 23 февраля 2020

Не могли бы вы проверить, указали ли вы здесь имя, совместимое с EventHub, и строку подключений, совместимых с EventHub enter image description here

Пожалуйста, попробуйте заменить сообщения / события именем, совместимым с EventHub, и IoTHubTriggerConnection как EventHub-совместимая конечная точка с портала.

Почти подобное обсуждение здесь: https://github.com/Azure/azure-event-hubs-dotnet/issues/103

У меня есть такой пример использования для Pu sh Передача данных в Azure данные explorer, и вот как выглядит моя функция enter image description here

Строка подключения Iot Hub, совместимая с EventHub enter image description here

Надеюсь, это поможет .

...