HttpClient taille de la mémoire tampon limite dépassée

Je suis avec mon client pour obtenir des informations concernant un fichier stocké dans ma Swift Objet de Stockage qui peuvent être accessibles via l'Api REST. En Swift, la TÊTE de la méthode et l'url menant à l'objet spécifié renvoie les métadonnées (hachage, horodatage, etc.) contenues dans le code HTML de la réponse de l' (n'a PAS de CONTENU) des en-têtes.

Mon code fonctionne parfaitement lorsque la taille du fichier est < 2 GO. Je reçois HttpResponseMessage et je suis en mesure d'analyser des données requises, mais quand je demande le fichier > 2 GO-je obtenir de l'exception : "Impossible d'écrire le plus d'octets de la mémoire tampon de la configuration de la taille maximale de mémoire tampon: 2147483647".

Je comprends, que HttpClient propriété MaxResponseContentBufferSize ne peut pas être réglé sur la valeur > 2 GO, mais je ne veux pas entrer son contenu. Est-ce que certains bug ou est-il une meilleure façon de résoudre ce problème?

public HttpResponseMessage FileCheckResponse(string objectName)
   {
        //create url which will be appended to HttpClient (m_client)
        string requestUrl = RequestUrlBuilder(m_containerName, objectName);
        //create request message with Head method
        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Head, requestUrl);
        //exception thrown here... 
        HttpResponseMessage response = m_client.SendAsync(request).Result;            

        return response;
    }

Lorsque vous essayez d'effectuer la même action à l'aide de Dev Client HTTP (extension Chrome) je n'ai aucun problème. Il semble que le Contenu de l'en-tête de Longueur rend impossible. Voici le résultat de Dev Client HTTP:

Content-Length: 3900762112
Accept-Ranges: bytes
Last-Modified: Fri, 06 Sep 2013 16:24:30 GMT
Etag: da4392bdb5c90edf31c14d008570fb95
X-Timestamp: 1378484670.87557
Content-Type: application/octet-stream
Date: Tue, 10 Sep 2013 13:25:27 GMT
Connection: keep-alive

Je serai heureux pour toutes les idées!
Merci

Solution

Première grâce à Darrel Mirrel, qui a résolu mon toute la journée le problème en quelques secondes 🙂
J'ai juste besoin de modifier une ligne dans le code en ajoutant HttpCompletitionOption où une réponse est obtenue:

HttpResponseMessage response = m_client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result;

L'option ResponseHeaderRead indique au client à la fin de l'opération dès que les en-Têtes sont lus withnout la lecture du contenu du message.

InformationsquelleAutor Milanec | 2013-09-10