Erste POST-oder PUT-arbeiten in einem WCF REST Service
Habe ich einen WCF-Dienst und ich bin in der Lage, von ihm BEKOMMEN, aber ich kann nicht herausfinden, wie zu SETZEN, um es. Ich will einfach nur, um ein Inkrement trifft Spielfeld jedes mal, wenn der Datensatz verwendet, in dem client. Hier ist mein code.
Schnittstelle:
[OperationContract]
[WebInvoke(Method = "PUT",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "IncSMS")]
void IncSMS();
Methode:
public void IncSMS()
{
var business =
(from p in _db.Businesses
where p.BusinessID == 1
select p).FirstOrDefault();
business.SMSHits += 1;
_db.SaveChanges();
}
Ich bin immer "Methode nicht erlaubt." Im IE, kann jemand sehen, was ich falsch mache???
Cheers,
Mike.
- Wenn Sie eine Anfrage im IE würde das nicht tun bekommen? Haben Sie versucht, mit so etwas wie wfetch?
- Wenn die Menschen nicht gehen, um Griff die 'OrDefault' - Szenario, warum Sie nicht einfach die Erste () - Funktion?
- es stellt die Ausnahme Auftritt für eine weitere Zeile.
- Wenn ich die Anfrage bekomme ich den Fehler 400 “Der server meldet einen Fehler bei der Verarbeitung der Anfrage. Siehe server-logs für weitere details."
- Ich kann nicht machen, eine PUT-Methode funktioniert. Immer Methode nicht erlaubt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, habe ich die Frage gestellt und es dauerte drei Tage, um die Antwort zu finden, zu etwas, das gewesen sein sollte, sehr einfach.
Also die Frage war: Wie füge ich ein
Content-Length
Kopf auf meine Anfrage???Antwort: Sie können nicht hinzufügen
Content-Length
eine URI, wenn eingegeben, die in einem browser", weil er per default die Ausführung eines GET"!!! HinzufügenContent-Length
um Ihren Kopf müssen Sie ein debugging-tool, e.g.. Fiddler oder erstellen Sie ein Formular oder eine andere Art von client!In fiddler geben Sie einfach
Content-Length
: 0 in der "Request-Header" - Abschnitt der "Request Builder" und es wird magisch arbeiten! Gesehen in der Nähe der Unterseite des Tutorials: http://blog.donnfelker.com/2008/12/04/how-to-rest-services-in-wcf-3-5-part-2-the-post/Danke Jungs,
Mike.
Methode nicht erlaubt in der Regel bedeutet, dass auf der client-Seite, sind Sie mit einer HTTP-Methode, die nicht mit dem übereinstimmen, was Sie so konfiguriert haben, dass im WCF-code. In Ihrem Fall haben Sie angegeben SETZEN wie die HTTP-Methode für das WCF -ausgesetzt-service-Methode. Es könnte sein, dass Sie HTTP POST verwenden, wenn das Attribut sagt SETZEN.
Wenn Sie Fiddler, werden Sie in der Lage, um zu sehen, die request-und response. Wenn das problem ist, wie ich beschrieben habe, dann, wenn Sie senden eine POST, die raw-Antwort wird wie folgt Aussehen:
"Allow" - header in der Antwort sagen Sie: nutzen Sie Bitte STELLEN.
Content-Length
- header der Anfrage. Die 411 scheint sich zu beschweren, dass. Sehen Sie die Anfrage in Fiddler ' als gut, und stellen Sie sicher, dass dieContent-Length
- header fehlt.Wenn Sie möchten, senden Sie eine
PUT
, versuchen Sie es mit Fiddler, das können Sie erstellen eine Anfrage über ein HTTP-Methode, ändern request-Header, anzeigen, response-Header, etc. Sehr nützlich zum testen von WCF services.