Ошибка таблицы хранения Azure при запуске функции Azure - PullRequest
0 голосов
/ 23 октября 2019

У меня есть функция, которая запускается из очереди и ближе к концу функции отправляет ее в таблицу Azure. Сейчас я запускаю это локально, и оно перестало работать локально (указывало на среду Azure), и я не знаю почему. Ошибка генерируется до того, как функция введена, и это:

VehicleCatalog.Storage.AzureTable: Value cannot be null.
Parameter name: <TableName>.

У меня есть раздел tableStorage в local.settings

"tableStorage": {
    "connectionString": "",
    "<tableName>": ""
  },

, и у меня есть таблица, упомянутая там, созданная вэмулятор. Я также перенес эту настройку в раздел «Значения», но все равно не радуюсь. Я не уверен, что это та таблица, на которую падает процесс.

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

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Если это функция Azure V2, вы можете попробовать использовать приведенный ниже код и настройки:

Код моей функции.cs:

using System;
using System.Collections;
using System.Collections.Generic;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using Microsoft.WindowsAzure.Storage.Table;

namespace FunctionApp18
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")]string myQueueItem, 
            [Table("test1")]ICollector<Test> outTable,
            ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
            outTable.Add(new Test() {
                PartitionKey = "mypartition_key",
                RowKey = Guid.NewGuid().ToString(),
                QuoteText = myQueueItem
            });
        }
    }

    //define the table entity
    public class Test : TableEntity
    {
        public string QuoteText { get; set; }
    }   

}

Вот local.settings.json:

{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    }
}

При тестировании работает нормально и записывает сущность в хранилище таблиц на эмуляторе:

enter image description here

0 голосов
/ 23 октября 2019

Загрузите обозреватель хранилищ Azure и найдите таблицу.

https://docs.microsoft.com/en-us/azure/vs-azure-tools-storage-manage-with-storage-explorer?tabs=windows

• Имена таблиц в учетной записи должны быть уникальными.

• Имена таблиц могут содержатьтолько буквенно-цифровые символы.

• Имена таблиц не могут начинаться с цифры.

• Имена таблиц не чувствительны к регистру.

• Имена таблиц должны быть длиной от 3 до 63 символов.

• Некоторые имена таблиц зарезервированы, включая «таблицы». Попытка создать таблицу с зарезервированным именем таблицы возвращает код ошибки 404 (неверный запрос).

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