c# - El servidor ha ocasionado una violación del protocolo. Section=ResponseHeader Detail=CR debe ir seguido de LF, en WinForms?
httpwebrequest webclient (1)
Estoy tratando de usar un WebClient / HttpWebRequest para descargar algunos datos de un servidor. Yo uso el siguiente código para hacerlo:
WebClient client = new WebClient();
client.Credentials = new NetworkCredential("admin", "password");
Stream datastream = client.OpenRead("http://routerlogin.com/cgi-bin/CF_logs.html");
StreamReader reader = new StreamReader(datastream);
El servidor es mi página está en la configuración de mi enrutador. Funciona bien desde un navegador, pero cuando se descarga usando mi código arroja una WebException
con el mensaje
El servidor ha ocasionado una violación del protocolo. Section = ResponseHeader Detail = CR debe ir seguido de LF, en WinForms ?.
He encontrado una solución que uno usaría si estuviera usando ASP.net, agregando lo siguiente a web.config:
<configuration>
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
</configuration>
Sin embargo, estoy haciendo una aplicación WinForms así que esto no funcionará para mí. ¿Qué alternativas existen para solucionar este problema?
En primer lugar, agregar un archivo app.config es tan fácil como agregar cualquier otro archivo. Cómo: Agregar un archivo de configuración de la aplicación a un proyecto de C #
Luego, solo tiene que agregar el fragmento de código anterior a esa nueva aplicación.config.
Otra forma de configurar esa propiedad mediante código, evitando la necesidad de un app.config, se muestra here o here .