C#, Restful Service Mit WebInvoke POST
Baue ich einen Restful-Dienst in C# und arbeiten gut, wenn ich
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, BodyStyle =
WebMessageBodyStyle.Wrapped, UriTemplate = "json/?id={id}")]
string jdata(string id);
und meine entsprechende Implementierung der Funktion ist:
public string json(string id)
{
return "You Typed : "+id;
}
Bis hier funktioniert alles gut,
aber wenn ich WenInvoke Method="POST" habe ich vor "Methode NICHT Erlaubt.";
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Xml, BodyStyle =
WebMessageBodyStyle.Wrapped, UriTemplate = "json/?id={id}")]
string jdata(string id);
- Tun Sie wirklich senden eine POST-Anforderung an den service? oder werden Sie versuchen, darauf zuzugreifen mit "nur eine URL in einem webbrowser'? (WebBrowser URL = GET, Webseite form = POST). Holen Sie erfordert nur eine URL Posten erfordert eine URL + Körper
- Warum verwenden Sie nicht nur MVC 4 Web API
- Bitte sagen Sie mir, wie kann ich die Verwendung der Post-Methode in WEBINVOKE. Dank
- die WebInvoke Attribut Definition des web service "Post". Es ist der client, der muss sicherstellen, dass es mit der POST und nicht GET (D. H. browing der BEITRAG basiert Erholsamen service wird der Ertrag einer Methode nicht erlaubt). Wenn Sie wollen, um einen browser verwenden, der für die Prüfung Sie müssen einen 'form' mit dem Formular-Felder enthalten die Parameter und die action des Formulars legen Sie Ihre web-service-operation-Endpunkt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
You get "Methode nicht erlaubt", weil Sie an den Uri "json/?id={id}" per GET statt POST.
Überprüfen Sie dies mit Ihrem Kunden (Sie erwähnte nicht, wie Sie dies nennen Ressource). Bitte geben Sie weitere details, wie Sie versuchen, Ihre web-service-Clients. Ist .Net-client?
Zum testen Ihrer API empfehle ich mit Fiddler - wenn Sie können explizit angeben, ob die Verwendung von GET-oder POST vor dem senden einer http-Anforderung:
Andere Sache ist, müssen Sie möglicherweise unwissentlich verwendet "json", wie Uri, sondern definiert als ResponseFormat WebMessageFormat.Xml. Ist es nicht ein wenig verwirrend für den Kunden? Vielleicht werden Sie zurückkehren wollte, JSON zurück? In diesem Fall würde ich empfehlen die Verwendung von Json in Anfrage und Antwort:
Dies ist, wie dein Vertrag Aussehen sollte, und dann im client
Oben ist nur etwas, das ich verwenden, um zu testen Sie meine Dienstleistungen. Hoffe, es hilft.