My use case is this, I want to call out to a webservice and if I am behind a proxy server that requires authentication I want to just use the default credentials...
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;
Otherwise I'll just simply make the call, It would be very nice to determine if the auth is required up front, rather than handle the exception after I attempt to make the call.
Ideas?
Actually, seems that this isn't an issue after all, Previously I was setting the auth like so...
This would be fine for when I was behind the proxy but throw an error when there was no proxy, so of course I expected the same error above as I was still just setting the same credentials, but you know what they say about assuming things....in fact there is no error at all with setting the default creds, all is sweet.
It looks like if you leave the Proxy stuff alone, .NET should just use the IE proxy settings, which seems like the most "correct" way of dealing with proxies...
System.Net.WebProxy
has a property calledUseDefaultCredentials
that may be what you want (but I have to admit a bit of ignorance here). The link to the relevant documentation is here.I strongly urge you to try this answer to a similar question (not: not the accepted answer). No code changes, just a line in your app.config file.
It was only after I had first deployed my app that I realised some users were behind firewalls... off to work to test it. Rather than do a test for a '407 authentication required' I just do the same
Proxy
setup whether it might be needed or not...I'm not sure what the relative advantages/disadvantages are (try{}catch{} without proxy first, versus just using the above), but this code now seems to work for me both at work (authenticating proxy) and at home (none).
If you want to check for the Proxy settings in IE, you could also peek into the registry: check the
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
branch of the registry tree - lots of options and settings there. Most notably:ProxyEnable
(a DWORD, 0 = no proxy, 1 = proxy enabled).