En option paramètres de chaîne de requête dans URITemplate dans WCF?
Je suis le développement de certains services RESTful dans WCF 4.0. J'ai une méthode que ci-dessous:
[OperationContract]
[WebGet(UriTemplate = "Test?format=XML&records={records}", ResponseFormat=WebMessageFormat.Xml)]
public string TestXml(string records)
{
return "Hello XML";
}
Donc si je peux naviguer dans mon navigateur pour http://localhost:8000/Service/Test?format=XML&les dossiers=10, alors tout fonctionne comme exepcted.
CEPENDANT, je veux être capable de naviguer à http://localhost:8000/Service/Test?format=XML et de laisser sur le "&dossiers=10" la partie de l'URL. Mais maintenant, je reçois une erreur de service depuis l'URI ne correspond pas à celle attendue modèle URI.
Alors, comment puis-je mettre en œuvre les valeurs par défaut pour certains de mes paramètres de chaîne de requête? Je tiens à défaut, les "records" de 10 par exemple, si la partie est à gauche de la chaîne de requête.
Vous devez vous connecter pour publier un commentaire.
Remarque: Cette question n'est pas à jour, veuillez consulter les autres réponses.
Cela ne semble pas être pris en charge.
Cependant, Microsoft a été mis au courant de ce problème et il y a un travail autour de:
https://connect.microsoft.com/VisualStudio/feedback/details/451296/
Selon cette réponse c'est corrigé dans la .NET 4.0. À défaut de fournir le paramètre de chaîne de requête semble entraîner compte tenu de la valeur par défaut pour le type.
Consultez ce blog poste. Fait sens pour moi, et est livré avec une classe d'analyser les paramètres de chaîne de requête.
http://blogs.msdn.com/b/rjacobs/archive/2009/02/10/ambiguous-uritemplates-query-parameters-and-integration-testing.aspx
Fondamentalement ne pas définir les paramètres de chaîne de requête dans le UriTemplate de sorte qu'il corresponde avec/sans les paramètres, et utiliser l'exemple de la classe pour les récupérer s'ils sont là, dans la méthode de la mise en œuvre.
Oui, je peux confirmer après WCF 4.0, il fonctionne comme un charme, comme décrit ici WCF et des paramètres optionnels
Cela semble fonctionner dans la WCF 4.0.
Assurez-vous de définir votre valeur par défaut dans votre "Service1.svc.cs"
Alors que c'est une vieille question, peut-on encore trouver à ce scénario de temps en temps dans les projets récents.
À envoyer en option paramètres de la requête, j'ai créé Web WCF Extensions package nuget.
Après l'installation, vous pouvez utiliser le paquet comme ça:
Côté serveur, vous pouvez récupérer les paramètres à l'aide de WebOperationContext: