我知道这已经被问过很多次了。我已经阅读了这里和其他类似网站上的大部分帖子。
http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/2931d21c-9ca8-4256-b213-915fad4c941b/
无济于事。这里是环境
Windows Server 2008 R2 64 位 Visual Studio 2008 .Net Framework 3.5
这是我尝试过的
我让代理使用代码进行身份验证
WebRequest req = WebRequest.Create(requestUri + data);
req.Proxy = new System.Net.WebProxy(<ProxyURL>:<port>",true);
req.Proxy.Credentials = CredentialCache.DefaultCredentials;
WebResponse resp = req.GetResponse();
这行得通,但是看到它减慢了应用程序的速度,我了解到我可以编辑我所做的 machine.config 文件。它也奏效了!
<system.net>
<defaultProxy
useDefaultCredentials="true">
<proxy
proxyaddress="<proxyURL>:<port>"
bypassonlocal="True"/>
</defaultProxy>
</system.net>
至少一两天。然后它开始失败。
然后我把它编辑成这个
<system.net>
<defaultProxy
useDefaultCredentials="true">
<proxy usesystemdefault="True"/>
</defaultProxy>
</system.net>
据我了解,这将使用 IE 设置连接到代理,但仍然无法正常工作。我也试过tihs代码
WebProxy proxy = new WebProxy(<proxy>:<port>);
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri(requestUri + data), "BASIC", new NetworkCredential(<username>,<password>));
proxy.Credentials = myCache;
request.Proxy = proxy;
request.Method = "GET";
这没有用。
注意:我可以将 machine.config 文件复制到我的计算机(Win XP)并从那里运行 .exe(没有代理代码),它工作正常。
对于 64 位操作系统,我需要做些什么不同的事情吗?我也可以在服务器上打开 IE8 并访问 URI 就好了。目标是预先验证代理,而无需在代码中提供用户名密码。