Wie poste und erhalte ich eine Datei mit Web-API

Ich habe eine Api Post-Methode, mit der ich jeden Dateityp akzeptieren möchte und die so aussieht:

[HttpPost]
    public async Task<IHttpActionResult> Post()
    {
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        var provider = new MultipartMemoryStreamProvider();
        await Request.Content.ReadAsMultipartAsync(provider);

        if (provider.Contents.Count != 1)
        {
            throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest,
                "You must include exactly one file per request."));
        }

        var file = provider.Contents[0];
        var filename = file.Headers.ContentDisposition.FileName.Trim('\"');
        var buffer = await file.ReadAsByteArrayAsync();
  }

Dies funktioniert in Fiddler, wenn ich versuche, ein Bild darauf zu posten. Ich schreibe jedoch eine Client-Bibliothek und habe eine Methode, die so aussieht:

        public string PostAttachment(byte[] data, Uri endpoint, string contentType)
    {
        var request = (HttpWebRequest)WebRequest.Create(endpoint);
        request.Method = "POST";
        request.ContentType = contentType;
        request.ContentLength = data.Length;

        var stream = request.GetRequestStream();
        stream.Write(data, 0, data.Length);
        stream.Close();

        var response = (HttpWebResponse) request.GetResponse();
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
           return reader.ReadToEnd();
        }            
    }

Wenn ich versuche, ein Bild mit dieser Funktion zu veröffentlichen, wird ein UnsuportedMediaType-Fehler angezeigt. Ich nehme an, es liegt daran, dass mein Bild nicht mehrteilig ist. Gibt es eine einfache Möglichkeit, meine Anfrage vom richtigen Typ zu stellen?

Wenn ich meine Web-API-Post-Methode ändern muss, gibt es eine einfache Möglichkeit, dies zu tun, ohne Dateien auf den Server zu schreiben und im Speicher zu behalten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage