Voici ma configuration de routage: et, voici mon contrôleur: p> quand j'essaie Mise à jour: strong> p> Voici ce que je reçois lorsque j'essaie API / Produits / GetProducts / Code>, ça marche.
API / Produits / Produit? Nom = Test code> fonctionne également, mais
API / Produits / Produit / Test Code> Ne fonctionne pas. Qu'est-ce que je fais mal? P>
API / Produits / Produit / Produit / Test Code> : p>
3 Réponses :
basé sur votre mise à jour:
Veuillez noter que
webapi forts> fonctionne basé sur la réflexion Cela signifie que vos bretelles bouclées {VARS} doivent correspondre au même nom de vos méthodes. p> blockQuote> Par conséquent, pour correspondre à ce
API / Produits / Produit / Test Code> en fonction de ce modèle
"API / {contrôleur} / {acte} / {id}" code > Votre méthode doit être déclarée comme ceci: p>
xxx pré> où le paramètre
nom de chaîne code> a été remplacé par
ID de chaîne code>. P>
Voici mon échantillon complet: p>
xxx pré> J'ai essayé d'utiliser un modèle totalement différent: P>
config.Routes.MapHttpRoute( name: "test", routeTemplate: "v2/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional, demo = RouteParameter.Optional } );
@ataravati ça marche bien à ma fin. Avez-vous une erreur?
Merci pour l'explication! J'ai changé le nom du paramètre et cela a fonctionné.
Ceci est en raison de vos paramètres de routage et de ses valeurs par défaut. Vous avez deux choix.
1) en modifiant les paramètres de route pour correspondre au paramètre produit () pour correspondre à l'URI. P> 2) L'autre et recommandé est Pour utiliser l'attribut correct de la signature de la méthode correcte. P> public object Product([FromUri(Name = "id")]string name){
// return the Product with the given name
}
OK, on dirait que vous devez spécifier le nom, comme celui-ci: Produit d'objet public ([Chouci (nom = "ID")] Nom de la chaîne) code>.
Merci pour la façon recommandée!
travaillé pour moi! Je voulais un paramètre différent de la chaîne, mais a été défini comme "ID" dans le fichier webapiconfig et votre suggestion la corrigée !! Merci beaucoup.
Votre itinéraire est défini comme identifiant comme paramètre, votre méthode attend un paramètre de nom. Je préfère le routage de l'attribut si vous le pouvez, puis définissez / API / produits / produit / {nom} sur la méthode du produit. P>
http://www.asp.net/web-api/overview/web-api-Routting-and-actions/attribute-routing-in-web-api-2 P>