Il codice:
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
Mi generava la seguente eccezione:
HttpWebRequest request = (HttpWebRequest) System.Net.WebException was unhandled
Message="The server committed a protocol violation. Section=ResponseStatusLine"
Ho indagato un pò sulla causa e nelle MSDN ho trovato questo articolo; in pratica per risolvere il problema si deve editare il file App.Config del proprio progetto (se il file non è presente lo si può aggiungere dal menu Project, Add New Item... e selezionare Application Configuration File) inserendo la seguente sezione:
<configuration>
<system.net>
<settings>
<httpwebrequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
</configuration>
Attenzione che come riportato nell'articolo:
By default, the .NET Framework strictly enforces RFC 2616 for URI parsing. Some server responses may include control characters in prohibited fields, which will cause the System.Net.HttpWebRequest.GetResponse method to throw a WebException.
If useUnsafeHeaderParsing is set to true, System.Net.HttpWebRequest.GetResponse will not throw in this case; however, your application will be vulnerable to several forms of URI parsing attacks. The best solution is to change the server so that the response does not include control characters.
La soluzione proposta per me non è applicabile perchè il server non posso cambiarlo.