À l'aide de la WCF dans une bonne voie semble grand. Je suis un grand fan de la grosse artillerie comme la simplicité et la flexibilité, mais j'aime aussi la façon dont l'Url a l'air. Ce que je peux dire, je suis un programmeur.
L'API simple pour la récupération et modification des ressources est compensée par une presque aussi simple ensemble de réponses d'erreur possibles, et je peux pas m'empêcher de penser que, pour en rester à une "pure" approche RESTful j'ai peut-être la coupe de mon nez hors de dépit en face, ou plus précisément, le nez de mon web service consommateurs. J'ai peut-être tort, mais il ne semble pas être très nombreux codes d'erreur Http que je peux utiliser, et aucun moyen de passer de nouveau un message d'erreur personnalisé.
Pour préciser, je parle de la bonne exceptionnel erreurs et ne devrait pas les erreurs. Je veux communiquer un problème à l'utilisateur pour les aider à identifier ce qu'ils doivent faire pour la corriger.
Les options possibles, je suis en considérant...
Suffit d'utiliser les codes d'erreur Http – Ce sembler comme il serait trop restrictif de ce que je suis en mesure d'exprimer, et ne me permet pas de fournir un message personnalisé. S'il vous plaît(!) corrigez-moi si je me trompe.
Toujours retour Http Succès, mais le retour d'erreur personnalisés objets – de toute Évidence, la plus flexible, mais certainement pas le plus Reposant.
Je serais vraiment reconnaissant si quelqu'un pouvait partager certains de l'expérience réelle de ce problème particulier.
Mise à jour
Merci pour la suggestion de l'aide de l' StatusDescription
de la propriété de l' OutgoingWebResponseContext
objet. Il semblait à première vue être quelque chose que je pourrais utiliser.
Je suis venu à la conclusion que mon deuxième option ci-dessus n'est pas pour moi. Je veux coller à la ce Http peut me donner.
J'ai du mal à la faire fonctionner, cependant. Quelle que soit la valeur que je l'approvisionnement pour cette propriété, il n'est pas retourné dans la réponse.
Ma méthode de service ressemble à ceci
public MyType GetMyTypes(string criteria)
{
try
{
return GetMyTypes();
}
catch (Exception ex)
{
OutgoingWebResponseContext response = WebOperationContext.Current.OutgoingResponse;
response.StatusCode = HttpStatusCode.Forbidden;
response.StatusDescription = "A Big fat error occurred";
return null;
}
}
Et voici les premières message de réponse. Il n'y a aucune mention du message personnalisé...
HTTP/1.1 403 Forbidden
Serveur: ASP.NET Serveur de Développement/9.0.0.0
Date: Wed, 07 Jan 2009 14:01:20 GMT
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Length: 0
Connection: Close
C'est pas comme si j'ai juste besoin d'accéder à la propriété correcte sur le client. L'information n'est tout simplement pas envoyé à travers le lien.
Qu'est-ce StatusDescription
bien faire réellement?
Mise à jour
Je n'ai jamais trouvé comment configurer le StatusDescription de la propriété. J'ai pas de message d'erreur, et d'aller uniquement avec les codes d'état Http. J'ai choisi de présenter à la fois le Savon de repos et de points de terminaison pour mes services, et afin que les clients peuvent choisir qui ils préfèrent utiliser – le simple Reposant messages ou le plus riche des messages Soap.