Передача облачной таблицы в качестве входной привязки - PullRequest
0 голосов
/ 01 апреля 2020

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

  public static async System.Threading.Tasks.Task RunAsync([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, [Table("CovidUpdateTable")]CloudTable ServiceFormTable, [Blob("outcontainer/{DateTime}", FileAccess.Write)] Stream outputBlob, ILogger log)

Здесь я должен указать имя таблицы в атрибуте таблицы, даже если я указал ее в конфигурации привязки, как показано ниже

{
      "type": "table",
      "name": "ServiceFormTable",
      "tableName": "CovidUpdateTable",
      "take": 50,
      "connection": "AzureWebJobsStorage",
      "direction": "in"
    }

в сценарии портала c# Я могу напрямую привязаться к CloudTable, но в Visual studio выдает ошибку, если я удаляю атрибут table и использую только cloudtable. Я не уверен, какова цель имени таблицы в этой конфигурации, когда мне нужно указать имя в атрибуте таблицы.

1 Ответ

1 голос
/ 01 апреля 2020

Когда мы создаем функцию на портале Azure, она создаст функцию сценария c# (файл csx) и сгенерирует файл функции. json для нас. И функция будет читать конфиги из файла функции. json автоматически. Таким образом, мы можем напрямую настроить binging в файле и не нужно настраивать что-то в коде. Но когда мы создаем функцию в Visual Studio, она создает функцию c# (файл cs) и не генерирует файл функции. json для нас. И функция не будет читать конфиги из функции. json файл автоматически. Поэтому нам нужно настроить эти параметры с помощью атрибута. Для получения более подробной информации, пожалуйста, обратитесь к документу


Обновление

Если вы хотите использовать свойства привязки в local.settings. json, пожалуйста, обратитесь к следующим шагам

  1. local.settings. json
{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "TableConnection": "<your azure table connection string>",
    "Tablename": "<your table name>"
  }

}
Настройка кода. Вы должны использовать [Table("%Tablename%",Connection = "TableConnection")]CloudTable cloudTable, для bing Azure table

Например

 public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            [Table("%Tablename%",Connection = "TableConnection")]CloudTable cloudTable,
            ILogger log)
        {

            log.LogInformation("C# HTTP trigger function processed a request.");
            log.LogInformation(cloudTable.Name);
            var query = new TableQuery<DynamicTableEntity>();

            foreach (var entity in
                await cloudTable.ExecuteQuerySegmentedAsync(query, null))
            {
                log.LogInformation(
                    $"{entity.PartitionKey}\t{entity.RowKey}\t{entity.Timestamp}");
            }
....
}

enter image description here

Для получения более подробной информации пожалуйста, обратитесь к документу

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