#c# #.net #azure-functions #.net-5 #.net-core-3.1
Вопрос:
Я нахожусь в процессе перехода с .NET Core 3.1 на .NET 5.0 для своего проекта функций Azure. У меня есть следующая функция деклерации:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
[Function("Test")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestMessage req,
ILogger log,
Microsoft.Azure.WebJobs.ExecutionContext context)
{
...
}
Однако я получаю следующее сообщение об ошибке:
System.Private.CoreLib: Exception while executing function: Functions.SaveBlob. System.Private.CoreLib: Result: Failure
Exception: Microsoft.Azure.Functions.Worker.Diagnostics.Exceptions.FunctionInputConverterException: Error converting 1 input parameters for Function 'Test': Cannot convert input parameter 'req' to type 'System.Net.Http.HttpRequestMessage' from type 'Microsoft.Azure.Functions.Worker.GrpcHttpRequestData'.
Мне нужно сохранить ExecutionContext для моего приложения.
Как я могу исправить эту ошибку?
Ответ №1:
Прочитав документацию Microsoft о контексте выполнения, я вижу, что класс был переименован в FunctionContext
Решение проблемы было простым, переименуйте ExecutionContext
в FunctionContext
. Я понимаю, что Microsoft.Azure.WebJobs
это не нужно для функций .NET 5 Azure. Затем мне нужно было изменить тип с System.Net.Http.HttpRequestMessage
на Microsoft.Azure.Functions.Worker.Http.HttpRequestData
. Наконец, я удалил ILogger
в пользу метода getLogger.
Конечная функция выглядит так.
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
[Function("Test")]
public static HttpResponseData Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestData req
FunctionContext context)
{
...
}
При обновлении обязательно внимательно прочитайте всю их документацию о новых изменениях. Это также помогло создать новый проект с помощью кода Visual Studio с использованием .NET 5, чтобы увидеть, как структурирован новый проект.