ci-dessous est mon contrôleur et mon action: voici webapi.config: p> Ce lien fonctionne: p > localhost: 59253 / API / PaiementManagementController? CommandType = check & Compte = paramvalue1 & txnid = Quelcontefix0123456789 P>
blockQuote> Cependant, je m'y attendais comme: P> localhost: 59253 / API / PaiementManagementController / CheckStatus? CommandType = check & Compte = paramvalue1 & txnid = Quelqu'unPefix0123456789 P>
BlockQuote> Même après la mise en routage de marquage comme ci-dessous: p> i reçoive une erreur comme suit: p>
Aucune ressource HTTP n'a été trouvée correspondant à l'URI de la requête 'localhost: 59253 / API / PaymentManagementController? CommandType = check & Compte = paramvalue1 & txnid = Quelquepfix0123456789'.
Aucune action n'a été trouvée sur le contrôleur 'PaymentManagement' qui correspond à la demande. p>
blockQuote> p>
5 Réponses :
Changez votre itinéraire vers
[HttpGet] [Route("CheckStatus")] public HttpResponseMessage CheckStatus(string commandType, string account, string txnId) { }
Comme je l'ai posté ci-dessus,
[RoutePrefix("api/PaymentManagementController")] public class PaymentManagementController : ApiController { [HttpGet] [Route("CheckStatus/{commandType}/{account}/{txnId}")] public HttpResponseMessage CheckStatus(string commandType, string account, string txnId) { } }
Try it. [HttpGet] [Route("CheckStatus")] public HttpResponseMessage CheckStatus(string commandType, string account, string txnId) { }
S'il vous plaît essayez d'ajouter l'explication que ce que vous avez fait dans la réponse.
Vous définissez des attributs sur votre contrôleur et cela fonctionne comme prévu en utilisant Attribut Attribut Strong>. L'URL définie dans la routage d'attributs fonctionne comme ceci: Pour obtenir l'URL demandée pour le travail, essayez ce code: p> Prefix / route / paramètres d'itinéraire Code> et pour votre code, il fonctionnera pour
API / PAYÉSMANDÉMONTROLLER? COMMANDTYPE = CHECK & COMPTE = PARAMVALUE1 & TXNID = PARAMVIX0123456789 CODE>.
Supprimer "contrôleur" de routePrefix ou supprimer l'attribut complet - les contrôleurs sont mappés automatiquement. Pour aller avec le lien attendu sans contrôleur: P> localhost: 59253 / API / PaymentManagement / CheckStatus? CommandType = check & Compte = paramvalue1 & txnid = Quelqu'unPefix0123456789 p>
blockQuote> J'irais avec: p> pour aller avec le lien attendu avec le contrôleur: P> localhost: 59253 / API / PaiementManagementController / CheckStatus? CommandType = check & Compte = paramvalue1 & txnid = Quelqu'unPefix0123456789 P>
blockQuote>
Je crois que la route que vous devriez tester "CheckStatus / {CommandType} / {compte} / {txnid}" doit être "localhost: 59253 / API / PaymentManagementController / checkStatus / chèque / paramvalue1 / s OMEPREFIX0123456789" Compte tenu de votre deuxième routage, Le premier, le contrôleur fonctionne correctement car vous avez attribué la chaîne NULL à la méthode.