AntonioGanci

Il blog di Antonio Ganci
posts - 201, comments - 420, trackbacks - 31

Eccezione WebException (protocol violation) alla chiamata del metodo GetResponse della classe HttpWebResponse

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.

Print | posted on giovedì 29 giugno 2006 23:00 | Filed Under [ Tips ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET