Переход на DotNet 9, неверный запрос (400) на контроллерах и методах API.C#

Место общения программистов C#
Ответить
Anonymous
 Переход на DotNet 9, неверный запрос (400) на контроллерах и методах API.

Сообщение Anonymous »

В dot net 9 вы можете выдать ошибку 400 при передаче значения null контроллеру с необнуляемыми параметрами метода контроллера. Есть два способа решить эту проблему. В моем случае мой клиент отправлял параметры «searchString» и «orderBy» как нулевые, и в Dotnet 8 проблем не было. Но после перехода на dotnet 9 клиент получает «неверный запрос 400». Поле x равно требуется', поэтому я решил эту проблему с помощью этих трюков.

Код: Выделить всё

[Authorize]
[HttpGet]
public async Task GetAll(int pageNumber, int pageSize, string searchString, string orderBy, int productId = 0)
{
if (UserId == null)
return BadRequest();

var products = await _mediator.Send(new GetUserConfigQuery((Guid)UserId, pageNumber, pageSize, searchString, orderBy)
{
ProductId = productId,
});
return Ok(products);
}
1- Сделайте параметры обнуляемыми

Код: Выделить всё

public async Task GetAll(int pageNumber, int pageSize, string? searchString, string? orderBy, int productId = 0)
2- Или, если вы не хотите изменять множество кодов в качестве решения 1, заставьте маршрутизатор принимать значение null, как раньше в dotnet 8

Код: Выделить всё

builder.Services.AddControllers(o =>
{
//o.AllowEmptyInputInBodyModelBinding = true;
o.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true;
}).AddValidators();
У меня это сработало, надеюсь, вам поможет тоже;)

Подробнее здесь: https://stackoverflow.com/questions/791 ... pi-methods
Ответить

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

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

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

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

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