<p>The following code works for me:</p>

<pre><code>var webProxy = WebProxy.GetDefaultProxy();
webProxy.UseDefaultCredentials = true;
WebRequest.DefaultWebProxy = webProxy;
</code></pre>

<p>Unfortunately, <code>WebProxy.GetDefaultProxy()</code> is deprecated.  What else should I be doing?</p>

<p>(using app.config to set the defaultProxy settings is not allowed in my deployment)</p>

From .NET 2.0 you shouldn't need to do this. If you do not explicitly set the Proxy property on a web request it uses the value of the static WebRequest.DefaultWebProxy. If you wanted to change the proxy being used by all subsequent WebRequests, you can set this static DefaultWebProxy property.
The default behaviour of WebRequest.DefaultWebProxy is to use the same underlying settings as used by Internet Explorer.
If you wanted to use
different proxy settings
to the current user then you would need to code
```
```
WebRequest webRequest = WebRequest.Create("http://stackoverflow.com/");
webRequest.Proxy = new WebProxy("http://proxyserver:80/",true);
```
```
or
```
```
WebRequest.DefaultWebProxy = new WebProxy("http://proxyserver:80/",true);
```
```
You should also remember the object model for proxies includes the concept that the proxy can be different depending on the destination hostname. This can make things a bit confusing when debugging and checking the property of webRequest.Proxy. Call
```
webRequest.Proxy.GetProxy(new Uri("http://google.com.au"))
```
to see the actual details of the proxy server that would be used.
There seems to be some debate about whether you can set
```
webRequest.Proxy
```
or
```
WebRequest.DefaultWebProxy = null
```
to prevent the use of any proxy. This seems to work OK for me but you could set it to
```
new DefaultProxy()
```
with no parameters to get the required behaviour. Another thing to check is that if a
proxy element
exists in your applications config file, the .NET Framework will
NOT
use the proxy settings in Internet Explorer.
The MSDN Magazine article
Take the Burden Off Users with Automatic Configuration in .NET
gives further details of what is happening under the hood.