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.
Schreibe einen Kommentar