0
votes

C # Routage de chaîne de requête API Web C #

ci-dessous est mon contrôleur et mon action: xxx

voici webapi.config: xxx

Ce lien fonctionne:

localhost: 59253 / API / PaiementManagementController? CommandType = check & Compte = paramvalue1 & txnid = Quelcontefix0123456789

Cependant, je m'y attendais comme:

localhost: 59253 / API / PaiementManagementController / CheckStatus? CommandType = check & Compte = paramvalue1 & txnid = Quelqu'unPefix0123456789

Même après la mise en routage de marquage comme ci-dessous: xxx

i reçoive une erreur comme suit:

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.


1 commentaires

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.


5 Réponses :


1
votes

Changez votre itinéraire vers

[HttpGet]
    [Route("CheckStatus")]
    public HttpResponseMessage CheckStatus(string commandType, string account, string txnId)
    {
    }


0 commentaires

1
votes

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)
    {
    }
}


0 commentaires

0
votes
    Try it.
    [HttpGet]
    [Route("CheckStatus")]
    public HttpResponseMessage CheckStatus(string commandType, string account, string txnId)
    {
    }

1 commentaires

S'il vous plaît essayez d'ajouter l'explication que ce que vous avez fait dans la réponse.



1
votes

Vous définissez des attributs sur votre contrôleur et cela fonctionne comme prévu en utilisant Attribut Attribut . L'URL définie dans la routage d'attributs fonctionne comme ceci: Prefix / route / paramètres d'itinéraire et pour votre code, il fonctionnera pour API / PAYÉSMANDÉMONTROLLER? COMMANDTYPE = CHECK & COMPTE = PARAMVALUE1 & TXNID = PARAMVIX0123456789 .

Pour obtenir l'URL demandée pour le travail, essayez ce code: xxx


0 commentaires

1
votes

Supprimer "contrôleur" de routePrefix ou supprimer l'attribut complet - les contrôleurs sont mappés automatiquement. XXX

Pour aller avec le lien attendu sans contrôleur:

localhost: 59253 / API / PaymentManagement / CheckStatus? CommandType = check & Compte = paramvalue1 & txnid = Quelqu'unPefix0123456789

J'irais avec: xxx

pour aller avec le lien attendu avec le contrôleur:

localhost: 59253 / API / PaiementManagementController / CheckStatus? CommandType = check & Compte = paramvalue1 & txnid = Quelqu'unPefix0123456789 xxx


0 commentaires