2009-09-29 34 views
13

Ho creato un'applicazione di esempio per asp.net e provo a raschiare dati dal mio server usando httpwebrequest. Ma alcune volte ho ottenuto questo errore sopra. Ho fatto alcune ricerche su google, ma tutti stanno dicendo che dovresti aggiungere la proprietà "<httpWebRequest useUnsafeHeaderParsing="true" />" in web.config.HttpWebRequestError: il server ha commesso una violazione del protocollo. Section = ResponseHeader Detail = CR deve essere seguito da LF

Questa proprietà ha la parola "NON SICURO", quindi sono troppo preoccupato per questo.Non posso aggiungere questo è nella configurazione del mio sito. C'è qualche altra opzione per leggere la risposta del mio URL raspa. Per favore fatemi sapere come può essere possibile senza "<httpWebRequest useUnsafeHeaderParsing="true" />"

Grazie in anticipo, Laxmilal Menaria

+0

Ho visto un caso diverso con lo stesso errore - Il meccanismo di memorizzazione nella cache di [Imperva's Incapsula] (https://www.incapsula.com/cdn-content-delivery-network/caching.html) ha provato a memorizzare nella cache una risposta specifica . così, invece di reindirizzare al server reale, * Incapsula * ha risposto con la stessa risposta, ma in qualche modo, le intestazioni erano leggermente diverse e non conformi a Windows CR-LF (\ r \ n). – itsho

risposta

19

questo è certamente un server problem-- il server non sta seguendo la specifica HTTP e il client .NET viene segnalazione come potenziale problema. "Unsafe" è in qualche modo un termine improprio. Qui non c'è un grosso problema di sicurezza, solo la non conformità con la RFC è negativa, ma sfortunatamente no raro.

Così, come l'avete trovato in Google, il modo per aggirare il problema è quello di applicare la seguente modifica di configurazione:

<configuration> 
<system.net> 
    <settings> 
    <httpWebRequest useUnsafeHeaderParsing="true" /> 
    </settings> 
</system.net> 
</configuration> 
+0

Se ti stai chiedendo dove aggiungere questo, guarda in Solution Explorer per 'App.config'. –

2

Un modo per eseguire il debug di questo (e per assicurarsi che sia la violazione del protocollo che sta causando il problema), è utilizzare Fiddler (Http Web Proxy) e vedere se si verifica lo stesso errore. Se non lo fa (cioè Fiddler ha gestito il problema per te), dovresti essere in grado di risolverlo usando il flag UseUnsafeHeaderParsing.

Se siete alla ricerca di un modo per impostare questo valore programatically vedere gli esempi qui: http://o2platform.wordpress.com/2010/10/20/dealing-with-the-server-committed-a-protocol-violation-sectionresponsestatusline/

2

Altra possibilità: quando si fa un POST, il server risponde con un 100 continua in maniera non corretta.

Questo risolto il problema per me:

request.ServicePoint.Expect100Continue = false;

Problemi correlati