Si quelque chose ne va pas dans un appel WCF REST, tel que la ressource demandée n'est pas trouvée, comment puis-je jouer avec le code de réponse HTTP (en le définissant sur quelque chose comme HTTP 404, par exemple) dans ma méthode OperationContract?
88
Réponses:
Il y a un
WebOperationContext
auquel vous pouvez accéder et il a uneOutgoingResponse
propriété de typeOutgoingWebResponseContext
qui a uneStatusCode
propriété qui peut être définie.la source
WebFaultException
, cependant, semble fonctionner.Si vous devez renvoyer un corps de raison, jetez un œil à WebFaultException
Par exemple
la source
WebFaultException
pour renvoyer unHttpStatusCode.Created
?Pour 404, il existe une méthode intégrée sur WebOperationContext.Current.OutgoingResponse appelée SetStatusAsNotFound (message sous forme de chaîne) qui définira le code d'état sur 404 et une description d'état en un seul appel.
Notez qu'il existe également SetStatusAsCreated (emplacement Uri) qui définira le code d'état sur 201 et l'en-tête d'emplacement avec un seul appel.
la source
Si vous souhaitez voir la description du statut dans l'en-tête, la méthode REST doit s'assurer de renvoyer null de la section Catch () comme ci-dessous:
la source
Vous pouvez également retourner un corps statuscode et la raison avec WebOperationContext de StatusCode et StatusDescription :
la source
réf: https://social.msdn.microsoft.com/Forums/en-US/f6671de3-34ce-4b70-9a77-39ecf5d1b9c3/weboperationcontext-http-statuses-and-exceptions?forum=wcf
la source
Cela n'a pas fonctionné pour moi pour les services de données WCF. Au lieu de cela, vous pouvez utiliser DataServiceException dans le cas de Data Services. J'ai trouvé le message suivant utile. http://social.msdn.microsoft.com/Forums/en/adodotnetdataservices/thread/f0cbab98-fcd7-4248-af81-5f74b019d8de
la source