这里是情况,我在家里的机器上测试我的localhost(没有代理服务器和Windows默认防火墙)并检索api.flickr.com xml文件,当我来上班时(使用ISA服务器来我得到“远程服务器无法解析”,所以我将这些行添加到web.config
<system.net>
<defaultProxy>
<proxy
usesystemdefault="False"
proxyaddress="http://localhost"
bypassonlocal="True"
/>
<bypasslist>
<add address="[a-z]+\.flickr\.com\.+" />
</bypasslist>
</defaultProxy>
</system.net>
返回: System.Net.WebException:远程服务器返回错误:(404)Not Found 。 什么地方出了错?感谢
答案 0 :(得分:4)
这里有两种可能的情况:
1:如果您正在构建客户端应用程序(例如Console或WinForms)并且想要使用WebClient或HttpWebRequest访问http://localhost而没有任何干预代理,那么bypassonlocal="True"
应该完成此任务。换句话说,您的app.config应如下所示:
<defaultProxy>
<proxy
usesystemdefault="False"
bypassonlocal="True"
/>
</defaultProxy>
</system.net>
2:但是,如果你试图让你的ASP.NET应用程序(在http://localhost上运行)能够使用代理或没有代理正确解析URI,那么你需要在web.config中正确设置代理信息(或在machine.config中设置,这样您就不必更改应用程序的web.config),因此ASP.NET将知道您正在运行代理或未运行代理。像这样:
主页:
<defaultProxy>
<proxy
usesystemdefault="False"
bypassonlocal="True"
/>
</defaultProxy>
</system.net>
工作:
<defaultProxy>
<proxy
usesystemdefault="False"
proxyaddress="http://yourproxyserver:8080"
bypassonlocal="True"
/>
</defaultProxy>
</system.net>
也可以使用代理自动检测,从注册表中获取设置等,但我总是回避那些服务器应用程序的方法......太脆弱了。
顺便说一句,如果你发现事情配置正确,但你仍然得到错误,我建议的第一件事是编写一个快速测试,在你的WebClient / HttpWebRequest调用之前手动设置代理,而不是依赖在配置上做到这一点。像这样:WebProxy proxyObject = new WebProxy("http://proxyserver:80/",true);
WebClient wc = new WebClient();
wc.Proxy = proxyObject;
string s = wc.DownloadString ("http://www.google.com");
如果请求即使在您使用代码时也没有正确地通过您的工作代理,即使在您的代码中正确配置了代理,代理本身也可能是问题所在。
答案 1 :(得分:0)
在 WebClient 中从本地下载数据没有问题,但从互联网下载是有问题的,所以配置以下
在您的Web.config中添加以下行并替换 Intenet代理地址和端口
<system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> <proxy usesystemdefault="False" proxyaddress="http://your proxy address:port" bypassonlocal="True" /> </defaultProxy> <settings> <servicePointManager expect100Continue="false" /> </settings> </system.net>
现在您的程序逻辑用于从互联网和公共URL下载内容。