Обновление до .NET 8/изолированная рабочая модель меняет код состояния возврата HTTPC#

Место общения программистов C#
Ответить
Anonymous
 Обновление до .NET 8/изолированная рабочая модель меняет код состояния возврата HTTP

Сообщение Anonymous »

У меня есть следующая функция, которая должна возвращать либо ответ 200 с книгой в качестве полезной нагрузки, либо ответ 404 с пустым телом:
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»