ASP.NET WebAPI löst 404 aus, wenn der Methodenparameter string oder int ist

7

Ich habe einen sehr einfachen Test auf ASP.NET MVC4 WebAPI durchgeführt und ein interessantes Problem gefunden:

Wenn eine Methode einen komplexen Typ annimmt, wird sie funktionieren, aber wenn sie string oder int braucht, wird 404 geworfen, wie der Screenshot zeigt: Das "AddProduct" funktioniert, aber "Test" und "Test1" sind immer nicht gefunden.

Wie soll ich die Methode richtig aufrufen?

    
Edi Wang 29.11.2012, 12:24
quelle

5 Antworten

2

Hast du es versucht,

%Vor%

Im Moment versagt es, weil Sie Ihr gesamtes json-Objekt (in der jquery ajax-Methode) in Anführungszeichen gesetzt haben.

Versuchen Sie, ohne die Anführungszeichen und lassen Sie es mich wissen!

Auch

Wenn Sie einzelne Variablen wie string username und int value testen, beachten Sie, dass die WEB API genau das erwartet.

Dieser Typ,

%Vor%

Sucht nach einem Beitrag, der dieser URL-Signatur entspricht (ich verwende HTTPIE) ...

$ http POST Ссылка Wert = 1

Dabei ist "4" der Wert der Variablen "value" in dieser Test1-Methode.

Mehr über HTTPIE hier: Scott Hanselman bei der Installation von HTTPIE

Hoffe das hilft!

    
Erik5388 29.11.2012, 14:46
quelle
17

Sie müssen Ihren String- oder int-Parameter mit dem Attribut [FromBody] dekorieren.

  

[HttpPost]   öffentliche Zeichenfolge Test ([FromBody] Zeichenfolge Benutzername)

     

[HttpPost]   public int Test1 ([FromBody] int-Wert)

    
mr beard 26.03.2014 19:13
quelle
4

versuche das:

Die Webseite akzeptiert den Wert von "[FormBody]", also solltest du mit "= {0}" posten ({0} wird durch Ihre Zeichenfolgedaten ersetzt) ​​

%Vor%

Siehe auch diese Antwort: POST eine Zeichenfolge an Web-API-Controller in ASP.NET 4.5 und VS 2012 RC

    
FelixFang 29.11.2012 14:45
quelle
0

Ich habe fast einen Tag danach gesucht, weil ich möchte, dass meine Daten ein JSON sind. Wenn Sie also einen Wert hier posten müssen, ist es:

INT:

%Vor%

STRING

%Vor%

STEUERUNG

%Vor%     
Cristian Oprea 09.08.2017 07:05
quelle
0

mit Route

%Vor%

call: localhost: xx // api / product / Hinzufügen

    
anıl yıldırım 09.08.2017 07:14
quelle