Клиент 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, и оно не вызывает исключения.

Другие вопросы по тегам