Функция Azure выдает исключения при вызове даже с шаблоном по умолчанию

Я сбит с толку тем, как сделать простую функцию Azure. В Visual Studio 2017 (у меня версия 15.5.6) я создаю простой проект, следуя инструкциям здесь: https://docs.microsoft.com/en-us/azure/azure-functions/functions-develop-vs

Мои шаги:

  1. Создайте новый проект функций Azure и оставьте платформу по умолчанию.Net Framework 4.6.1
  2. На следующем экране я выбираю HttpTrigger, и в раскрывающемся списке говорится "Функции Azure v1 (.NET Framework)"
  3. Я установил хранилище в качестве своего хранилища Azure, которое я уже создал на портале, и установил авторизацию "admin".

Все компилируется нормально. Я вызываю функцию через PostMan и получаю эту ошибку:

"Произошла ошибка ScriptHost. Исключительная ситуация при выполнении функции: Functions.Function1. Microsoft.Azure.WebJobs.Host: параметр привязки исключения" log ". Microsoft.Azure.WebJobs.Host: для параметра" log "не было предоставлено значение."

Для справки, вот созданная ими функция шаблона, которую я совсем не модифицировал:

using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;

namespace TestFunc
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Admin, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            // parse query parameter
            string name = req.GetQueryNameValuePairs()
                .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
                .Value;

            // Get request body
            dynamic data = await req.Content.ReadAsAsync<object>();

            // Set name to query string or body data
            name = name ?? data?.name;

            return name == null
                ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
                : req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
        }
    }
}

Если я удалю "TraceWriter log" и вызову "log.Info (...."), а затем попробую еще раз, я получу эту ошибку:

"Произошла ошибка ScriptHost. Исключительная ситуация при выполнении функции: Functions.Function1. Mscorlib: Исключение было сгенерировано целью вызова. TestFunc: Метод не найден: 'System.Net.Http.HttpResponseMessage System.Net.Http.HttpRequestMessageExtensions.CreateResponse(System.Net.Http.HttpRequestMessage, System.Net.HttpStatusCode,!!0)'."

Я пытался изменить версию.Net на 4.7, но ничего не изменилось. Я попытался изменить версию функции на v2 вместо v1 (хотя сейчас она в бета-версии), но ничего не произошло. Единственный пакет NuGet, добавленный шаблоном, - это Microsoft.NET.Sdk.Functions, версия 1.0.6. Доступно обновление до 1.0.7, но это тоже не помогает.

Понятия не имею, что попробовать. Это шаблон по умолчанию. У меня есть другой проект функции, который работает нормально, но это было сделано некоторое время назад, когда VS2015 был последним, и был в то время, когда вам нужно было иметь эти файлы function.json для создания вашей предварительно скомпилированной DLL. Я надеялся, что смогу использовать текущую систему, так как она кажется наилучшим способом продвижения вперед, но если я не смогу заставить это работать, я могу просто вернуться к старому способу работы. Благодарю.

0 ответов

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