2013-03-28 5 views
0

Ajout de données aléatoires dans la réponse. Cela se produit sur tous les sites et pages, et pour chaque page particulière, ces données sont corrigées. Exemple:Réponse C# ReceiveAsync corrompue

Connection: close 
X-Powered-By: PHP/5.4.11 

1fb4 
<!DOCTYPE html.......... 

ou

<script> 
    $('#toggle_debug').cl 
134 
ick(function() { 

Сode:

if (e.BytesTransferred > 0) 
{ 
    Response.AddRange(e.Buffer); 
    if (Response.Count >= MaxContentLength) 
    { 
     Final(); 
    } 
    else 
    { 
     e.SetBuffer(0, BufferSize); 
     e.AcceptSocket.ReceiveAsync(e); 
    } 
} 

Réponse - Liste des octets. En outre, StringBuilder et d'autres ont le même problème. Les symboles supplémentaires sont fixes, ne changent pas. Quel pourrait être le problème?

+2

'' Receive' et read' retourner un entier qui vous indique comment ont été lus d'octets. Seulement que beaucoup d'octets dans le tampon sont valides. Vous devez utiliser une boucle si vous voulez tout lire. – CodesInChaos

+0

Pas besoin d'ajouter tout le tampon, et une partie de celui-ci? – user2058005

+0

Je suppose que vous devez utiliser les premiers octets 'e.BytesTransferred' du tampon. Lisez les documents pour plus de détails. Quelque chose comme 'Response.AddRange (e.Buffer.Take (e.BytesTransferred))' – CodesInChaos

Répondre

0

Je pense que vous voulez

Response.AddRange(new ArraySegment<byte>(e.Buffer, 0, e.BytesTransferred)); 
+0

peut-être, vous le pensez Response.AddRange (nouveau ArraySegment (e.Buffer, 0, e.BytesTransferred) .Array); Ne fonctionne pas: – user2058005

+0

oui, j'ai oublié le paramètre de type explicite, mis à jour la réponse. –