To diagnose, to understand what is happening, you can include the following block in the <configuration> section of the app.config file
Then you can see and understand what is happening.
<system.diagnostics> <trace autoflush="true" /> <sources> <source name="System.Net"> <listeners> <add name="MyTraceFile" /> </listeners> </source> <source name="System.Net.Sockets"> <listeners> <add name="MyTraceFile" /> </listeners> </source> </sources> <sharedListeners> <add name="MyTraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="System.Net.trace.log" /> </sharedListeners> <switches> <add name="System.Net" value="Verbose" /> <add name="System.Net.Sockets" value="Verbose" /> </switches> </system.diagnostics>