Ошибка CS0234: файл сборки / метаданных Microsoft.Azure.EventHubs отсутствует в функции Azure 2.0 - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь создать функцию Azure для триггера EventHub с множеством элементов для пакетирования сообщений о событиях.

Ниже приведен код в файле run.csx

#r "Microsoft.Azure.EventHubs"

using System.Text;
using System;
using Microsoft.ServiceBus.Messaging;
using Microsoft.Azure.EventHubs;

public static void Run(EventData[] eventMessage, ILogger logger)
{
    logger.LogInformation("Event: {Encoding.UTF8.GetString(eventMessage.Body)}");
    logger.LogInformation("EnqueuedTimeUtc={eventMessage.SystemProperties.EnqueuedTimeUtc}");
    logger.LogInformation("SequenceNumber={eventMessage.SystemProperties.SequenceNumber}");
    logger.LogInformation("Offset={eventMessage.SystemProperties.Offset}");

}

вдоль конфигурации времени выполнения host.json:

{
  "version": "2.0"
}

и файл конфигурации функции function.json

{
  "bindings": [
    {
    "type": "eventHubTrigger",
    "name": "eventMessage",
    "direction": "in",
    "eventHubName": "myEventHub",
    "connection": "consumer_hub",
    "consumerGroup": "$Default",
    "cardinality": "many"
    }
  ]
}

После получения ошибки компиляции в отношении сборки отсутствует

2018-11-27T09:36:54.325 [Error] run.csx(1,1): error CS0006: Metadata file 'Microsoft.Azure.EventHubs' could not be found
2018-11-27T09:36:54.389 [Error] run.csx(5,17): error CS0234: The type or namespace name 'ServiceBus' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)
2018-11-27T09:36:54.425 [Error] run.csx(6,23): error CS0234: The type or namespace name 'EventHubs' does not exist in the namespace 'Microsoft.Azure' (are you missing an assembly reference?)
2018-11-27T09:36:54.522 [Error] run.csx(9,24): error CS0246: The type or namespace name 'EventData' could not be found (are you missing a using directive or an assembly reference?)

Не могли бы вы помочь мне, почему зависимостьнедоступно в лазурной функции?Даже в документации Azure есть ссылка на это. Это означает, что эти сборки уже должны присутствовать в среде выполнения, предоставляемой Azure.

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs

1 Ответ

0 голосов
/ 27 ноября 2018

Документ каким-то образом противоречив, попробуйте следующий код.

#r "../bin/Microsoft.Azure.EventHubs.dll"

using System.Text;
using System;
using Microsoft.Azure.EventHubs;

public static void Run(EventData[] eventMessage, ILogger logger)
{
    foreach (var message in eventMessage)
    {
        logger.LogInformation($"Event: {Encoding.UTF8.GetString(message.Body)}");
        logger.LogInformation($"EnqueuedTimeUtc={message.SystemProperties.EnqueuedTimeUtc}");
        logger.LogInformation($"SequenceNumber={message.SystemProperties.SequenceNumber}");
        logger.LogInformation($"Offset={message.SystemProperties.Offset}");
    }
}

Кроме того, в function.json кардинальность предназначена для функции js для получения событий в пакете.Для c # достаточно EventData[].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...