2012-12-28 9 views
36

HttpWebRequest aggiunge automaticamente un'intestazione Expect: 100-continue per le richieste POST. Varie fonti intorno al Internet suggeriscono che questo può essere disattivato come segue:Come disattivare l'intestazione "Expect: 100 continue" in HttpWebRequest per una singola richiesta?

Tuttavia, sto scrivendo una libreria e non posso disattivare questo per l'intero dominio applicazione, nel caso in cui l'applicazione si basa su questo comportamento. Né posso supporre che rimarrà impostato su questo valore. Come posso disabilitarlo per una richiesta specifica?

+0

Questo ha funzionato per me alla fine. –

risposta

61

La classe HttpWebRequest ha una proprietà denominata ServicePoint che può essere utilizzata per modificare questa impostazione per una richiesta specifica. Per esempio:

var req = (HttpWebRequest) WebRequest.Create(...); 
req.ServicePoint.Expect100Continue = false; 
+0

ottima risposta. questo mi ha salvato dal dover aggiornare i client a .NET 4.5 per impostare la proprietà HttpWebRequest.ContinueTimeout. – itsben

+0

in fase di runtime viene automaticamente aggiunto di nuovo –

15

Se hai bisogno anche di impostare un proxy, assicurarsi di farlo prima. Altrimenti, Expect100Continue verrà ripristinato su true. Quindi:

HttpWebRequest webRequest = WebRequest.CreateHttp(_url); 
webRequest.Proxy = new WebProxy(_proxyHost, _proxyPort); 
webRequest.ServicePoint.Expect100Continue = false;