Функция Azure выдает исключения при вызове даже с шаблоном по умолчанию
Я сбит с толку тем, как сделать простую функцию Azure. В Visual Studio 2017 (у меня версия 15.5.6) я создаю простой проект, следуя инструкциям здесь: https://docs.microsoft.com/en-us/azure/azure-functions/functions-develop-vs
Мои шаги:
- Создайте новый проект функций Azure и оставьте платформу по умолчанию.Net Framework 4.6.1
- На следующем экране я выбираю HttpTrigger, и в раскрывающемся списке говорится "Функции Azure v1 (.NET Framework)"
- Я установил хранилище в качестве своего хранилища 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. Я надеялся, что смогу использовать текущую систему, так как она кажется наилучшим способом продвижения вперед, но если я не смогу заставить это работать, я могу просто вернуться к старому способу работы. Благодарю.