3

here is the sitution, i am testing on my localhost from my machine at home (no proxy server and windows default firewall) and retrieving api.flickr.com xml file, when I come to work (that uses an ISA server to connect) I get "remote server could not be resolved" so I added these lines to the web.config

<system.net>
  <defaultProxy>
   <proxy
    usesystemdefault="False"
    proxyaddress="http://localhost"
    bypassonlocal="True"
     />
   <bypasslist>
    <add address="[a-z]+\.flickr\.com\.+" />
   </bypasslist>

  </defaultProxy>
 </system.net>

that returns:System.Net.WebException: The remote server returned an error: (404) Not Found. what went wrong? thanks

4

2 回答 2

4

这里有两种可能的情况:

1:如果您正在构建客户端应用程序(例如控制台或 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");

如果即使在您使用代码时请求也无法正确通过您的工作代理,即使您的代码中正确配置了代理,那么代理本身也可能是问题所在。

于 2009-11-22T23:32:58.973 回答
1

WebClient中从本地下载数据没有问题,但从 Internet 下载是有问题的,因此配置以下

在您的 Web.config 添加以下行并替换您的Internet 代理地址端口

<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>

现在您的程序逻辑可用于从 Internet 和公共 URL 下载内容。

于 2014-09-25T08:59:13.667 回答