带有OData服务4.x的Microsoft OData Client 6.x在客户端上处理NULL返回(404 Not Found)

时间:2017-09-06 21:57:11

标签: asp.net-web-api2 odata odata-v4

在调用给定实体的OData函数时,我似乎无法弄清楚如何在客户端上处理NULL(404 Not Found)。

实施例>调用服务,如“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>();

在使用Microsoft OData客户端时,我似乎无法找到从odata服务处理空值的“正确”方法。

也许我可以连接到客户端“ReceivingResponse”事件来处理404 Not Found一些如何?任何建议......

1 个答案:

答案 0 :(得分:0)

OData客户端的默认行为是在OData服务返回404 File Not Found时抛出异常。

为了解决这个问题,OData Client生成的代码中有一个名为&#34; IgnoreResourceNotFoundException&#34;。 将此属性设置为true,并且不抛出异常。