it-roy-ru.com

Невозможно загрузить Newtonsoft 11.0.0.0 в приложении-функции Azure 2.0

Я создал готовое приложение-функцию Azure с помощью триггера Http Azure. Который дал мне код ниже. Все, что я обновил, я преобразовываю тело HttpRequest в мой класс Helper.

Вот код

public static class TriggerTest
{
    [FunctionName("TriggerTest")]
    public static IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequest req, TraceWriter log)
    {

        log.Info("C# HTTP trigger function processed a request.");

        string name = req.Query["name"];

        string requestBody = new StreamReader(req.Body).ReadToEnd();

        Helper data = JsonConvert.DeserializeObject<Helper>(requestBody);

        name = name ?? data?.value;

        return name != null
            ? (ActionResult)new OkObjectResult($"Hello, {name}")
            : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
    }
}

public class Helper
{
    public string value { get; set; }
}

Когда я пытаюсь запустить, он компилируется нормально, но затем консоль спам

Произошла ошибка ScriptHost

System.Private.CoreLib: Исключительная ситуация при выполнении функции: TriggerTest. TestingAzure.FunctionApp: не удалось загрузить файл или сборку Tons Newtonsoft.Json, версия = 11.0.0.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed. Не удалось найти или загрузить определенный файл (исключение из HRESULT: 0x80131621). System.Private.CoreLib: Не удалось загрузить файл или сборку ‘Newtonsoft.Json, версия = 11.0.0.0, Культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed ’

Все пакеты Nuget ссылаются на Newtonsoft 11.0.2, на что ссылается Microsoft.NET.Sdk.Functions. Проект представляет собой проект .NET Standard 2.0. Пакеты Nuget, на которые я ссылаюсь,

  • Microsoft.ApplicationInsights v2.7.2
  • Microsoft.Azure.WebJobs.Extensions v3.0.0.-beta8
  • Microsoft.Azure.WebJobs.Extensions.Http v3.0.0-beta8
  • Microsoft.Azure.WebJobs.ServiceBus v3.0.0.-beta5
  • Microsoft-NET-Sdk-Функции v1.0.19 NETStandard, Библиотека v2.0.3
  • Newtonsoft.Json v11.0.2

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

Также CLI, который загружен из Visual Studio 2017, является 2.0.1-бета.25.

Функции Azure и веб-задания для Visual Studio версии 15.10.2009.0

5
Canvas

Для функций v2 функция sdk 1.0.19 (> = 1.0.14) по умолчанию ссылается на Newtonsoft.Jon v11.0.2. Ошибка возникает из CLI, который использует ваш VS. 2.0.1-beta.25 устарела, последняя версия VS - 2.0.1-beta.38 прямо сейчас.

Решение - убедиться, что загрузка прошла успешно. Кроме того, Microsoft.Azure.WebJobs.ServiceBus должен быть 3.0.0-beta8.

  1. Удалить старую папку CLI %localappdata%\AzureFunctionsTools.

  2. Перезапустите VS и создайте новую функцию Azure. Подождите, пока диалоговое окно создания для VS загрузит новый CLI и шаблоны, пока мы не увидим, что изменение подсказки к Обновлениям готово.

    enter image description here

    enter image description here

  3. Если вы не видите, что Обновление готово через некоторое время (время загружать 200M файлов на вашей стороне), проверьте %localappdata%\AzureFunctionsTools еще раз. Если содержимое заполнено только папкой 2.0.1-бета.25, попробуйте повторить шаги, описанные выше, или прибегнуть к обновить часть этого ответа для загрузки вручную, необходимо зайти на %localappdata%\AzureFunctionsTools\feed.json, чтобы найти URL для загрузки последней версии (версия фида) = 2.5.2 прямо сейчас).

1
Jerry Liu