2017-01-23 3 views
0

Hej,Post-Daten durch Url WebAPI

Ich bin keine Daten in die Aktionsmethode durch Abfragezeichenfolgeflag auf die Aktionsmethode zu schreiben, die in der unten stehenden Controller-Klasse befindet sich mein Code.

ich einen URL-Typ „http://localhost:53459/api/esb/post/test“ Wert und nichts posten geschieht

Jede Hilfe würde geschätzt.

+0

Sie dies nicht tun brauche den POST in der URL. Also sollte es so sein: 'http: // localhost: 53459/api/esb/test' – alltej

Antwort

0

Wenn Sie die URL in einen Browser eingeben, erstellen Sie eine GET-Anfrage, so dass sie Ihre Post-Aktion niemals erreichen wird. Sie können dies bestätigen, indem Sie den erlaubten Verben der Aktion "GET" hinzufügen (Hinweis: Entfernen Sie das Attribut [HttpPost]).

[Route("post")] 
[AcceptVerbs("POST", "GET")] 
public string Post([FromUri]string value) 
{ 
    return string.Format("{0} is posted successfully ", value); 
} 
+0

Warum werden get? Es sieht aus wie Methode verhält sich wie erhalten – adl

+0

Dies ist nur zu demonstrieren, warum Ihre Aktion nicht getroffen wird. Wie an anderer Stelle erwähnt, können Sie keine Post-Anfrage über den Browser stellen, wenn Sie nicht Postman oder ähnliches verwenden. –

0

entfernen Parameterbindung [FromUri] und aktualisieren Sie die Strecke wie

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Web API configuration and services 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{value}", 
      defaults: new { value = RouteParameter.Optional } 
     ); 
    } 
} 

-Controller

[RoutePrefix("api/esb")] 
public class EsbController : ApiController 
{ 
    [Route("get")] 
    [HttpGet] 
    public string Get() 
    { 
     return "Hello there!"; 
    } 

    [Route("post/{value}")] 
    [HttpPost] 
    [AcceptVerbs("POST")] 
    public string Post(string value) 
    { 
     return string.Format("{0} is posted successfully ", value); 
    } 

} 

Dies ist für mich zu arbeiten, versuchen Postman in Chrom oder Fiedler zu verwenden.

POST http://localhost:XXXXX/api/esb/post/test HTTP/1.1 
+0

Danke für die Antwort. Ich habe es versucht. Es funktioniert nicht. Weißt du, was das Problem damit ist? – adl

+0

Wenn ich das im Postboten versuche. Es funktioniert gut, aber wenn ich es im Browser versuche. Es zeigt nichts – adl

+0

Sie können den Browser für die Post-Anfrage nicht verwenden. Wenn Sie in der Website verwenden möchten, erstellen Sie eine Ajax-Anfrage. Überprüfen Sie diesen Beitrag. http://stackoverflow.com/questions/4797534/how-do-i-manual-fire-http-post-requests-with-firefox-or-chrome –

0

Für dot.Net Core (Ich bin mit v2.0), verwenden FromRoute

[AllowAnonymous] 
[HttpPost] 
[Route("validateEmail/{validationCode}")] 
public async Task<IActionResult> ValidateEmail(
[FromRoute] Guid validationCode) 
    { 
     await authService.ValidateEmailAsync(validationCode); 

     return Ok(); 
    } 

dann wie folgt schreiben:

enter image description here