using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.Functions.Worker;
public class Function1
{
private readonly ILogger _logger;
public Function1(ILogger logger)
{
_logger = logger;
}
private static readonly Dictionary items = new Dictionary
{
{ "1", "Book 1" },
{ "2", "Book 2" },
{ "3", "Book 3" }
};
[Function("GetItem2")]
public async Task GetItemAsync([HttpTrigger(AuthorizationLevel.Function, "get", Route = "GetItem2/{id}")] HttpRequest request,
string id,
CancellationToken c)
{
_logger.LogInformation($"Received request for item with id: {id}");
await Task.Delay(100, c);
if (items.TryGetValue(id, out var item))
{
return new OkObjectResult(item);
}
else
{
return new NotFoundResult();
}
}
}
Он работает должным образом в .NET 6 и работает на функциях Azure с внутрипроцессной моделью.
Я обновляю его до .NET 8. и изолированная рабочая модель, и теперь ответ изменился! он всегда возвращает 200 с подробностями запроса в полезных данных:

< img alt="ответ на несуществующую книгу" src="https://i.sstatic.net/0wQlPyCY.png" />
Интересно, что вызвало такое изменение в поведении и как это сделать? Я это исправлю? Конечно, я не хочу включать статусы http в полезные данные ответа.
Я использую следующий файл Program.cs:
var host = new HostBuilder()
.ConfigureAppConfiguration((context, config) =>
{
config.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true);
config.AddEnvironmentVariables();
})
.ConfigureFunctionsWorkerDefaults()
.ConfigureServices(ConfigureServices)
.ConfigureLogging((context, logging) =>
{
logging.AddConfiguration(context.Configuration.GetSection("Host:Logging"));
})
.Build();
host.Run();
static void ConfigureServices(HostBuilderContext builderContext, IServiceCollection serviceCollection)
{
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... tatus-code
Мобильная версия