2009-05-23 6 views
1

J'ai un HttpHandler personnalisé qui appelle un webservice pour obtenir un fichier. En test, j'appelle le webservice de production et le HttpHandler renvoie le fichier correctement. Lorsque je le teste dans l'environnement de production sur le serveur, cela fonctionne également. Toutefois, si j'appelle le HttpHandler à partir d'un client distant (pas sur le serveur), le nom de fichier et la taille sont correctement définis, mais les octets de fichier téléchargés sont nuls. Des idées?HttpHandler retournant zéro longueur octet []

+1

Postez le code et vérifiez ce qui se passe avec Wireshark – Andomar

Répondre

1

Alors, voici l'affaire. J'ai créé un multipart range handler (vous devez implémenter le RFC pour diffuser du contenu vers, par exemple, un iPhone ou un Adobe Reader). La spécification est supposée permettre de gérer un fichier lorsque le client demande une plage d'octets au lieu du tableau entier. Le problème avec mon gestionnaire est venu quand le client voulait le BLOB entier:

if (context.Request.Headers[HEADER_RANGE] != null) 
{ 
    ... 
} 
else 
{ 
    context.Response.ContentType = contentItem.MimeType; 
    addHeader(context.Response, HEADER_CONTENT_DISPOSITION, "attachment; filename=\"" + contentItem.Filename + "\""); 
    addHeader(context.Response, HEADER_CONTENT_LENGTH, contentItem.FileBytes.Length.ToString()); 
    context.Response.OutputStream.Write(contentItem.FileBytes, 0, contentItem.FileBytes.Length); 
} 

j'oublié d'inclure:

context.Response.Flush(); 

Après avoir ajouté cette ligne de code, il a commencé à travailler dans l'environnement de production. Je trouve très étrange, cependant, que cela fonctionne sur le serveur et non sur les clients. Quelqu'un peut-il nous éclairer sur la raison de ce choix?