I am trying to call a webservice. I need to use a proxy that uses a WPAD script. The URL to this WPAD script is different for different deployments of the application.
Although IE has the correct proxysettings, the application is running as a windows service running under Local System account, so the application does not know the IE-settings for this windows-user.
Putting the following in app.config works:
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true" >
<proxy autoDetect="True" scriptLocation="http://url.to/wpad.dat"/>
</defaultProxy>
</system.net>
But this has the restriction that it cannot be configured by the user. Is there a way to do the above dynamically from (C#-)code? I also suspect the above will change behaviour of webservices that should not go through a proxy (but I have not verified that).
At http://msdn.microsoft.com/en-us/library/system.net.webproxy.aspx I found the helpful text: "(For an example that demonstrates using the WPAD feature, see the documentation for the IWebProxyScript class.)" but I have not found the example :(.
This article on code project shows how to use windows APIs to execute the PAC script and return the correct proxy details for a given url: http://www.codeproject.com/Articles/12168/Using-PAC-files-proxy
You could use the function to find out the proxy details, and then configure the web service objects proxy directly, or change WebRequest.DefaultProxy.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With