J'ai écrit un service WCF REST Collection simple avec REST Start Kit Preview 2. Le projet modèle fournit une classe Service avec une instance de collection Dictionary comme éléments de collection interne. Chaque élément a une clé et une valeur.Service REST: Obtenir une requête vers une URL avec un paramètre de chaîne spécial
Le problème est que si la clé contient un '.' comme 'ProductA.Item1', ma requête sur un élément spécifique ne fonctionnera pas. La requête GET URL pour cet article est quelque chose comme:
http://localhost:1247/Service.svc/ProductA.Item1
Il ressemble à IIS traite l'URL comme une ressource au lieu de passer xxx.xxx comme paramètre à ma méthode de service REST OnGetItem (id string). Si je supprime la partie de '.Item1' (la construction de la collection interne avec des touches sans point comme 'ProductAItem1'), cela fonctionne très bien.
J'ai même essayé de me changer WebGet de UriTemplate d'attribut aux produits ({id}), puis essayé cette URL personnalisée: méthode
http://localhost:1247/Service.svc/Products(ProductA.Item1)
http://localhost:1247/Service.svc/Products('ProductA.Item1')
encore je ne peux pas atteindre à mon code OnGetItem (string id). Sans les touches de type point, l'URL personnalisée fonctionne également.
Je ne suis pas sûr que ce point ou '.' dans l'URL est un caractère spécial par le serveur IIS ou non. Comment puis-je l'échapper ou le faire comme un paramètre de chaîne avec un point à l'intérieur s'il s'agit d'un caractère spécial? Ou je ne peux tout simplement pas utiliser le point dans mon URL?
C'est très possible. Le service de routage peut bloquer l'appel à OnGetItem(). Je vais vérifier dans le forum ASP.Net. Merci! –