Cómo publicar y recibir un archivo con API web

Tengo un método de publicación de API que quiero poder aceptar cualquier tipo de archivo y que se ve así:

[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();
  }

Esto funciona en Fiddler cuando intento publicar una imagen en él. Sin embargo, estoy escribiendo una biblioteca cliente y tengo un método que se ve así:

        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();
        }            
    }

Cada vez que intento publicar una imagen usando esto, recibo un error UnsuportedMediaType. ¿Supongo que es porque mi imagen no es Contenido de varias partes? ¿Hay una manera fácil de hacer mi solicitud del tipo correcto?

Si tengo que cambiar mi método de publicación de API web, ¿hay una manera fácil de hacerlo sin escribir archivos en el servidor y guardarlo en la memoria?

Respuestas a la pregunta(1)

Su respuesta a la pregunta