AWS .NET SDK DynamoDB LoadAsync возвращает ошибку «Не удалось загрузить тип»

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

Ошибка:

{ "errorType": "AggregateException", "errorMessage": "One or more errors occurred. (Could not load type 'Amazon.Runtime.Internal.AsyncRunner' from assembly 'AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604'.)", "stackTrace": [ "at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)", "at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)", "at ProChiller.SyncDevices.QueryDevices(Devices input)", "at lambda_method(Closure , Stream , Stream , ContextInfo )" ], "cause": { "errorType": "TypeLoadException", "errorMessage": "Could not load type 'Amazon.Runtime.Internal.AsyncRunner' from assembly 'AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604'.", "stackTrace": [ "at Amazon.DynamoDBv2.DataModel.DynamoDBContext.LoadAsync[T](Object hashKey, CancellationToken cancellationToken)", "at ProChiller.SyncDevices.d__6.MoveNext()" ] } }

Как видите, кажется, что невозможно загрузить AsyncRunner из AWSSDK.

Код:

private static AmazonDynamoDBClient amazonDynamoDBClient = new AmazonDynamoDBClient();

public static Devices GetDeviceHandler(Devices input, ILambdaContext context)
{
     var task = QueryDevices(input);
     task.Wait();
     return task.Result;   
}

static async Task<Devices> QueryDevices(Devices device)
{
    DynamoDBContext dbctx = new DynamoDBContext(amazonDynamoDBClient);
    var operation = dbctx.LoadAsync<Devices>(device.TccvID);
    Devices devices = await operation;
    return devices;
}

Что я пробовал:

Я пробовал несколько разных способов запросов с Dynamo, но этот метод самый чистый и обычно дает мне те результаты, которые я ищу.

Клянусь, у меня когда-то работал этот или очень похожий код, и в прошлом у меня были проблемы с версией SDK, вызывающие проблемы при ее обновлении. Я попытался откатить версию AWSSDK.Core, чтобы проверить, не связана ли это с новой версией и моим кодом. Однако независимо от того, к какой версии я откатываюсь, я все равно получаю ту же ошибку.

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

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

Другая информация о сборке:

Это приложение .Net Core 1.0.

Версия AWSSDK.Core - 3.3.24.3, но я заметил, что в ошибке написано «версия = 3.3.0.0».

Вопрос:

Кто-нибудь знает, что может вызвать эту ошибку загрузки типа? Есть ли конкретная версия SDK, к которой я должен вернуться, чтобы исправить это, или я лаяю не на то дерево?

Заранее благодарю за любую помощь!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 842
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Короткий ответ: я думаю, вам нужно обновить AWSSDK.DynamoDBv2 до более новой версии.

У нас был запрос на перенос, который устранил необходимость в AsyncRunner из AWSSDK.Core, который требовался для AWSSDK.DynamoDBv2, и поэтому он был удален. Оглядываясь назад на вашу проблему, это решение было неправильным. Если вы обновите пакеты AWSSDK.Core и AWSSDK.DynamoDBv2, все будет в порядке, но в этом случае вы обновили только AWSSDK.Core, но ваша более старая версия AWSSDK.DynamoDBv2 по-прежнему ссылается на AsyncRunner из AWSSDK.Core.

Я поговорю с командой и посмотрю, как снова добавить AsyncRunner для подобных случаев.

Да, я думаю, что пытался обновить оба, но обнаружил, что было что-то еще, что было устаревшим, что сломало другой кусок кода. Итак, я пришел к тому, что считал рабочим состоянием. Я действительно обнаружил, что если я создал новый проект с .net core 2 и загрузил новейшие пакеты, я смог заставить все работать. Так что, в конце концов, решение может заключаться в том, чтобы просто перенести все на более новый фреймворк. При условии, что я смогу получить разрешение потратить на это время. :)

Ryan Gibbs 13.07.2018 23:24

Таким образом, обновление DynamoDBv2 до 3.3.10.3 решает эту проблему, просто протестируйте ее.

Ryan Gibbs 13.07.2018 23:39

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

Norm Johanson 14.07.2018 01:07

Другие вопросы по теме