2017-09-06 1 views
0

Je n'arrive pas à comprendre comment gérer NULL (404 Not Found) sur le client lors de l'appel d'une OData fonction pour une entité donnée.Microsoft OData Client 6.x avec le service OData 4.x handle NULL return (404 Not Found) sur le client

Ex> appelant le service comme "Context.Objects.ByKey (1) .SomeFunction(). GetValue()"
Je veux obtenir "NULL" du service, mais plutôt sur le client, il jette un 404 Not Found exception. Si je modifie le service pour retourner "NULL" alors je recevrai une exception de sérialisation sur le serveur et si je demande au serveur de retourner "OK ​​(null)", j'obtiendrai également une exception de sérialisation.

Voici le code du serveur pour le contrôleur

[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); 
    } 
} 

Et voici le code WebApiConfig

builder.EntityType<SomeObject>().Function("SomeFunction").Returns<string>(); 

Je ne peux pas sembler trouver la façon « correcte » de la gestion des valeurs nulles de la service odata lors de l'utilisation du client Microsoft OData.

Peut-être que je peux fil dans l'événement client "ReceivingResponse" pour gérer le 404 Introuvable comment? Toutes les suggestions ...

Répondre

0

Le comportement par défaut du client OData consiste à lever une exception lorsque le service OData renvoie un fichier 404 introuvable. Pour contourner cela, il existe une propriété sur le code généré par le client OData appelé "IgnoreResourceNotFoundException".
Définissez cette propriété sur true et sans lancer d'exception.