Hey. The URL you provided no longer appears to be valid, maybe it expired as you have mentioned, so I could not test it myself, but there are some situations in which WebClient / HttpWebRequest seem to fail, although I have no idea why unfortunately. So while I wish I could help you further in resolving it with the code you have provided, I cannot. Personally I would like to know why this happens, especially if the URL you provided was at one point functional.
What I can suggest though, since you seem to be looking for alternative approaches, is the URLDownloadToFile method assuming P/Invoke is fine by you. Take a look at:
URLDownloadToFile[
^]. It appears to be quite straight-forward and useful for your situation, since it requires no additional applications and can also download 'quietly'. In C# it can then be easily called as follows:
using System.Runtime.InteropServices;
[DllImport("urlmon.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern Int32 URLDownloadToFile([MarshalAs(UnmanagedType.IUnknown)] object pCaller,
[MarshalAs(UnmanagedType.LPWStr)] string szURL,
[MarshalAs(UnmanagedType.LPWStr)] string szFileName,
Int32 dwReserved, IntPtr lpfnCB);
URLDownloadToFile(null, "http://www.google.com.mt/images/srpr/logo4w.png", "C:\\Logo.png", 0, IntPtr.Zero);
Hope this has been helpful.