Wie nennen WCF-REST/JSON-Service von der client-Anwendung
Ich habe WCF-REST/JSON-Service, ich Schaffe es mithilfe diese Vorlage. In meinem Dienst habe ich eine Methode
[WebInvoke(UriTemplate = "Create", Method = "*",RequestFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Bare)]
public void Create(PictureData pictureData)
{
var context = new EFDBContext();
context.PictureData.Add(pictureData);
context.SaveChanges();
}
PictureData dieses meiner Entität-Daten, die ich versuche zu speichern in DB über EF.
In meinem WPF-client-Anwendung, die ich versuche, um diese Methode aufzurufen:
using (var client = new HttpClient("http://localhost:8080/ScreenPictureService/Create"))
{
var dataContract = HttpContentExtensions.CreateJsonDataContract(pictureData);
client.Post("", dataContract);
}
Aber nichts passieren
- Ich auch versuchen zu nutzen Method="POST" in WebInvoke Attribut
- Auch ich versuche, mit Adresse ohne "Erstellen" in der HttpClient und dann im client.Post im ersten parameter
UPDATE
Nachdem ich versuchen, diese
var dataContract = HttpContentExtensions.CreateJsonDataContract(pictureData, typeof (PictureData));
var client = new HttpClient();
using(var response = client.Post("http://localhost:8080/ScreenPictureService/Create", dataContract))
{
response.EnsureStatusIs(HttpStatusCode.OK);
}
Ich erhielt Bad Request 400
UPDATE 2
Ich fand meine Probleme:
-
Benutze ich JSON.NET zu serialisieren mein Objekt und wenn ich byte-array Konvertierung nach base64-format, aber mein service erwarten byte-array, es gelöst zu verwenden, Liste von bytes.
-
Und zweites problem - ich versuche, Sie zu erhalten screnshot von meinem desctop mit high-defenition, und ich habe die gleiche Antwort(Bad Request 400), wenn ich das Bild ändern der Auflösung auf 800x600, service gut funktioniert, und da ist meine Frage - Wie die Erhöhung der Quote-Anforderung-Nachricht. Ich versuche, yo verwenden, innen standardEndpoint Abschnitt(web.config)
readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"
Aber es funktioniert nicht
- Was meinst du mit passiert nichts ? Gibt es irgendwelche Fehler ? Haben Sie überprüft das Ereignisprotokoll ?
- Ich meine, dass keine Fehler empfangen wurde.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie versucht, die überwachung der genauen Anforderung /Antwort-mit einem tool wie Fiddler? Vielleicht ist dein Beitrag nicht so, wie man es erwarten würde?
Nicht die WCF-service-wissen zu akzeptieren, RUHE? Wenn Sie nicht mit der WCF.WebApi es ist in der Regel die schrecklichen wcf-Bindungen zu konfigurieren, zB:
Macht einen einfachen REST zu arbeiten?
Schlage ich vor,Hängematte, es ist einfach und funktioniert gut.
Den Fehler 400 Bad request können durch viele Möglichkeiten. Versuchen Sie die Ablaufverfolgung auf Ihre service -. Es kann getan werden, indem Sie den link hier.
Falls Sie auch noch eine config-Datei mit der Konfiguration stellen Sie sicher, dass die readerQuotas sepecified als unten, wenn Sie mit "webHttpBinding":
Wenn Sie mithilfe der REST-API, mit der Definition der service-Routen in der globalen.asax und mit einem standard-endpoint verwenden Sie die unten: