2013-01-30 17 views
28

Sto sviluppando un'app che per motivi di codice precedente non posso eseguire l'aggiornamento per il nuovo HttpClient, quindi sto utilizzando HttpWebRequests.Come disattivare l'intestazione "Expect: 100 continue" in HttpWebRequest di WinRT

In .NET 4 potremmo disattivare l'intestazione Expect (su richieste di post) usando la proprietà ServicePoint.Expect100Continue, ma su WinRT non è disponibile.

Come può essere realizzato su WinRT?

MODIFICA: System.Net.ServicePointManager.Expect100Continue non disponibile.

+0

Non è possibile rimuovere Expect dalla raccolta di intestazioni della richiesta? – Ben

+0

No perché non c'è, l'intestazione viene automaticamente aggiunta quando inizio ad aspettare la risposta. – DVD

+0

Hai provato a giocare con la proprietà ContinueTimeout (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.continuetimeout.aspx), lke settando -1 o 0 o MaxValue. Questa sembra essere l'unica proprietà correlata supportata dalla versione WinRT ... (no ContinueDelegate, no Expect, no SendChunked, no ServicePoint) –

risposta

1

Sembra l'unica opzione per sovrascrivere BeginGetRequestStream. HttpWebRequest ha un metodo privato MakeRequest e in esso l'intestazione Expect100Continue viene aggiunta alla raccolta dell'intestazione della richiesta.

+0

Come posso farlo? ? La classe HttpWebRequest ha un costruttore interno ... – DVD

+1

Ho trovato una soluzione migliore. Hai provato questo: HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create ("http: // something"); webRequest.Method = "POST"; webRequest.ServicePoint.Expect100Continue = false; –

+0

quell'opzione non è disponibile su winrt XD – DVD

38
 var c = new HttpClient(); 
     c.DefaultRequestHeaders.ExpectContinue = false; 
+0

Come ho detto non posso usare httpclient – DVD

+0

Scusami visto che dopo aver postato. Sfortunatamente il codice per modificare la proprietà HttpWebRequest ExpectContinue è stato esplicitamente bloccato. Questo è l'unico modo per liberarsene. –

+0

Impossibile trovare la proprietà ExpectContinue: https://msdn.microsoft.com/en-us/library/windows/apps/windows.web.http.headers.httprequestheadercollection.aspx Sto leggendo un documento sbagliato? – Hong

10

Metti questo è il tuo webconfig.

<system.net> 
<settings>  
<servicePointManager expect100Continue="false"/>   
</settings>  
</system.net> 

Funziona anche! Lo uso nella mia webapplication. Ma la risposta sopra è altrettanto buona!

+0

La domanda riguarda specificamente WinRT, funzionerà anche lì? – svick

+0

Oops my bad ... Non ho provato – 8bitcat

+0

Non penso che sia un'opzione su Winrt dal momento che ServicePointerManager non esiste XD. – DVD

Problemi correlati