Cómo cargar archivos en la acción Asp.Net MVC 4.0 que se ejecuta en IIS Express con la clase HttpClient incluida en .Net 4.0

Tengo una aplicación C / S. Implementé el servidor con Asp.Net MVC 4.0, y el cliente se ejecuta en .Net 4.5.

Tengo una Acción de Controlador en el lado del servidor se ve así:

public JsonResult Upload(string arg1, int arg2)
{
    //do something about arg1 and arg2 here
    ...

    var files = Request.Files;
    if (files.Count > 0)
    {
        foreach(var file in files)
        {
            var ms = new MemoryStream();
            file.InputStream.CopyTo(ms);
            //save it to somewhere
            ...
        }
    }

    ...
}

Creé una página html de prueba para probarla en el navegador. Funcionó como se esperaba.

En el lado del cliente, utilizoHttpClient clase y funcionó perfectamente donde no hay carga de archivos involucrados. Sin embargo, después de días de investigación todavía no tengo la suerte de resolver esto en mi máquina de depuración que ejecuta IIS Express. Encontré que todas las pistas llevan aMultipartFormDataContent, pero aún no puedo hacer que funcione, incluso si copio esos códigos de muestra, el servidor todavía no puede obtener nada, todos los argumentos están vacíos y no hay archivos en elRequest.Files. Solía ​​tener mi propia clase de ayuda http basada enHttpWebRequest, que funciona para cargar archivos, pero prefiero usar HttpClient en este nuevo proyecto.

Entonces, ¿cómo subo archivos al servidor con HttpClient?

Respuestas a la pregunta(1)

Su respuesta a la pregunta