Клиент Microsoft OData 6.x со службой OData 4.x обрабатывает возврат NULL (404 Not Found) на клиенте
Я не могу понять, как обрабатывать NULL (404 Not Found) на клиенте при вызове функции OData для данного объекта.
Ex> вызывающий сервис, такой как "Context.Objects.ByKey(1).SomeFunction().GetValue()"
Я хочу получить "NULL" из службы, но вместо этого на клиенте выдается исключение 404 Not Found.
Если я изменю службу на "NULL", то получу исключение сериализации на сервере, и если я скажу серверу вернуть "OK(null)", я также получу исключение сериализации.
Вот код сервера для контроллера
[HttpGet]
public IHttpActionResult SomeFunction([FromODataUri] int key)
{
string something = null;
// Do some check and adjust the variable "something"
if (string.IsNullOrWhiteSpace(something))
{
return NotFound();
}
else
{
return Ok(something);
}
}
А вот код WebApiConfig
builder.EntityType<SomeObject>().Function("SomeFunction").Returns<string>();
Я не могу найти "правильный" способ обработки нулевых значений из службы odata при использовании клиента Microsoft OData.
Может быть, я могу подключиться к клиенту события "ReceivingResponse" для обработки 404 Not Found, как? Какие-либо предложения...
1 ответ
Поведение клиента OData по умолчанию - генерировать исключение, когда служба OData возвращает файл 404 Not Found.
Чтобы обойти это, в сгенерированном клиентом OData свойстве есть свойство IgnoreResourceNotFoundException.
Установите для этого свойства значение true, и оно не вызывает исключения.