2017-09-06 1 views
0

Je suis aux prises avec obtenir mon serveur api web hébergé asp.net pour obtenir un appel à publier sur un contrôleur.Comment envoyer un message au contrôleur api de base de Web asp.net et obtenir un argument avec la valeur

$.ajax({ 
    url: mySelfHostedAspWebApi, //i.e. http://1.2.3.4:1234/ 
    type: "POST", 
    data: cmd, 
    contentType: 'application/json', 
    success: (function(scanCmd) { 

    }), //success: (function (scanCmd){ 
});// $.ajax({ 

Et le contrôleur principal asp.net en C# est plutôt droit.

... 
    [Route("")] 
    [HttpPost] 
    public HttpResponseMessage Post(Command cmd) 
    { 
    ASSERT(null,cmd); // <=== problem here !!! 
    if(cmd=="go") Go(";-)"); 
    ... 

Dans l'un de mes anciens projets, je suis tombé sur le même genre de problème ... Et le correctif était d'ouvrir un certain fichier sur le système, qui contrôlait si le poste était macadamia pour myselfhostedapp et écrire le POST sur la ligne qui contrôlait l'accès à ma demande. (Je ne peux pas rappeler ce fichier était ...)

  • si cela semble familier, s'il vous plaît ajouter un soupçon .. merci
+0

Juste en vérifiant, pourquoi n'avez-vous pas déclaré votre paramètre 'cmd' avec l'attribut' FromBody' comme ceci: 'public HttpResponseMessage Post ([FromBody] Command cmd)'? –

+0

Copie possible de https://stackoverflow.com/questions/45862459/asp-net-core-2-api-post-objects-are-null/45862556. –

+1

J'ai débogué un peu plus loin, et a constaté que le problème a été provoqué par avoir le contentType: 'application/json' dans l'appel d'ajax. – kfn

Répondre

1

Je vous crois manquez la déclaration de paramètre FromBody pour votre cmd paramètre comme ceci:

[Route("")] 
[HttpPost] 
public HttpResponseMessage Post([FromBody] Command cmd) // <<- tweak here 
{ 
    ASSERT(null,cmd); // <=== no problem here :-) 
    if(cmd=="go") Go(";-)"); 
    ... 
0

le problème était dans l'utilisation de contentType: 'application/json' dans l'appel ajax. - J'ai supprimé cela, et j'ai obtenu les données.