2009-05-22 6 views
14

Sto usando il C# usando il WebClient().C# elimina l'intestazione Connection in WebClient

Stavo testando quali intestazioni sono state inviate e ho notato che la seguente intestazione è stata aggiunta automaticamente.

Connection : Keep-Alive 

C'è un modo per rimuovere questo?

risposta

4

Uso HttpWebRequest invece di WebClient (è un po ' meno conveniente, ma non di molto) e impostare la proprietà KeepAlive-false.

Non ho provato questo - è possibile che cambierà semplicemente il valore dell'intestazione di Connessione invece di rimuoverlo - ma vale la pena provare. I documenti per la proprietà Connection almeno suggeriscono che aggiunge solo Keep-Alive.

+5

Una cosa da notare è che questa operazione non * rimuovere * Connection intestazione, anche se lo cambia da "Connection: Keep-Alive" a "Connection: Close". –

15

Mi sono imbattuto nello stesso numero questa mattina. In seguito il suggerimento di Skeet, può essere raggiunto passando HttpWebRequest-WebClient ereditando esso:

class MyWebClient : WebClient 
{ 
    protected override WebRequest GetWebRequest(Uri address) 
    { 
     WebRequest request = base.GetWebRequest(address); 
     if (request is HttpWebRequest) 
     { 
      (request as HttpWebRequest).KeepAlive = false; 
     } 
     return request; 
    } 
} 

intestazioni ora inviati includeranno Connection : close