Vista上的WebProxy和身份验证

时间:2009-07-02 05:10:03

标签: c# windows-vista proxy

我正在通过webrequest与web服务交谈,我在需要身份验证的代理服务器后面。

我想做的是捎带IE /控制面板设置,但我遇到了一些困难......

如果我这样做,一切都很好......

  WebProxy proxy = new WebProxy(@"http://my.secret.address:8080");
  proxy.Credentials = CredentialCache.DefaultNetworkCredentials; 
  WebRequest.DefaultWebProxy = proxy;

我真正想做的就是这个......

WebRequest.DefaultWebProxy = WebRequest.GetSystemWebProxy(); // Subsequent webrequest call Fails with a "Unable to connect to remote server" error message.

我真的不想指定代理地址,因为它对所有用户都不一样。实际上有些甚至不会落后于代理。我只想使用IE /控制面板设置。哦,我正在使用Vista以防万一,而且econtrol面板/ IE中的代理设置也使用自动配置文件(proxy.pac文件)

编辑:如此简洁。如何使用IE /控制面板代理设置。包括何时使用自动配置文件?

进一步编辑:

好的,我认为我已将问题缩小到Auto Config的问题。如果我在对话框中明确设置了代理地址,我可以使用.GetSystemWebProxy()设置...但是(就像我的情况一样)如果我使用的是Auto Config pac文件,我就有这个问题。

alt text http://img40.imageshack.us/img40/5635/57955210.jpg

2 个答案:

答案 0 :(得分:1)

在.NET 1.0中,您可以使用:

WebRequest.DefaultWebProxy = WebProxy.GetDefaultProxy();

在2.0中,DefaultWebProxy 假设默认包含IE代理设置,因此该方法已过时。

http://www.west-wind.com/WebLog/posts/2542.aspx有更多信息。

更新:现在显然是.NET 2.0方法;

WebRequest.DefaultProxy = WebRequest.GetSystemWebProxy();

http://msdn.microsoft.com/en-us/library/system.net.webrequest.getsystemwebproxy.aspx

答案 1 :(得分:1)

叹了口气,经过更多的调查后我解决了这个问题只是为了得到一个不同的......

修复方法是使用.pac Uri

创建WebProxy
WebProxy proxy = new WebProxy(@"http://blahblah/proxy.pac);

容易腻......

所以现在我正在通过代理,但代理服务器正在搞乱我的请求,Web服务正在进行操作。 (注意,如果我具体关于代理地址,那就不会这样做......叹气)