Невозможно загрузить Newtonsoft 11.0.0.0 в приложении-функции Azure 2.0 - PullRequest
0 голосов
/ 07 сентября 2018

Я создал готовое приложение-функцию 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: не удалось загрузить файл или сборку '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

1 Ответ

0 голосов
/ 07 сентября 2018

Для функций 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).

...