Web API Controller convertit MemoryStream en StreamContent

J'ai une grande collection d'images stockées sur un serveur sécurisé, dont certains doivent être affichés sur un monde confronté à de portail. Le portail est le serveur est à l'intérieur d'une zone démilitarisée qui permet de demandes, mais empêche les demandes directes de se déplacer à travers domaine sécurisé. Les images sont catalogués à l'aide de SOLR et peut être téléchargé via un interne (apache?) serveur de http://intenalname/folderA/folderAB/file.jpg

À l'intérieur de mon PhotoController je peux créer une instance de la WebClientdonner l'url et obtenir un MemoryStream. Si je tente d'utiliser ce flux de mémoire pour remplir la réponse.contenu-je obtenir une réponse vide (par fiddler). Si j'utilise le flux de mémoire pour écrire dans un fichier local, puis lire le fichier (à l'aide d'un FileStream et FileInfo), il fonctionne "comme prévu".

Je devrais être en mesure d'obtenir à partir d'une MemoryStream à StreamContent sans passer par le système de fichiers (que je ne devrais pas) ?? mais Comment?
Le constructeur par défaut pour StreamContent(stream) accepte la mémoire de l'instance de flux de données sans erreur du compilateur...mais il juste ne travail.

HttpResponseMessage response = Request.CreateResponse();

using (WebClient webClient = new WebClient())
{
    string url = string.Format(PHOTO_GET, filePath);
    using (MemoryStream memoryStream = new MemoryStream(webClient.DownloadData(url)))
    {
        //If these lines are unremarked the stream moves 'through' the file system and works (?!)
        //memoryStream.Position = 0;
        //string tempName = @"c:\test\" + Guid.NewGuid().ToString() + ".jpg";
        //var fs = new FileStream(tempName, FileMode.OpenOrCreate);
        //stream.CopyTo(fs);
        //fs.Close();
        //FileInfo fi = new FileInfo(tempName);

        response.Headers.AcceptRanges.Add("bytes");
        response.StatusCode = HttpStatusCode.OK;
        //response.Content =  new StreamContent(fi.ReadStream());
        response.Content = new StreamContent(memoryStream);
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("render");
        response.Content.Headers.ContentDisposition.FileName = fileName;
        response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");//("application/octet-stream");
        response.Content.Headers.ContentLength = memoryStream.Length;

    }

}
return response;

Lors de l'essai par Fiddler-je obtenir:

[Fiddler] ReadResponse() a échoué: Le serveur n'a pas de retour complet
la réponse à cette demande. Le serveur a renvoyé 0 octets.

(lorsque vous allez à travers FileStream Fiddler me montre l'image.)

source d'informationauteur Cos Callis