2010-05-08 407 views
9

从浏览器打开公共页面正常工作。WebClient - 远程服务器返回一个错误:(403)禁止

使用WebClient下载相同页面抛出 - (403)禁止。

这是怎么回事?

这里被快速复制/粘贴例子(控制台应用程序使用的)特定页面的网页:

try 
{ 
    WebClient webClient = new WebClient(); 
    string content = webClient.DownloadString("http://he.wikisource.org/wiki/%D7%A9%D7%95%D7%9C%D7%97%D7%9F_%D7%A2%D7%A8%D7%95%D7%9A_%D7%90%D7%95%D7%A8%D7%97_%D7%97%D7%99%D7%99%D7%9D_%D7%90_%D7%90"); 
} 
catch (Exception ex) 
{ 
    throw; 
} 
+0

你多久打一次电话这个网址?你可能会受到限制。 – Nix 2010-05-08 13:37:26

+0

我觉得并不多,在尝试使用webclient之前,浏览器中的次数并不多。我现在已经从同一个网站上下载了更多的网页,并且每次都很好。所以它看起来像这个页面只是抛出错误?! – dzolnjan 2010-05-08 13:45:08

+1

该页面可能正在查看用户代理标题,并且因为您没有提供它而弹跳。 – 2010-05-08 13:59:28

回答

38

我只是跑提琴手看到响应尝试过了,它返回用以下通知状态码。

Scripts should use an informative User-Agent string with contact information, or they may be IP-blocked without notice.

This works。

WebClient webClient = new WebClient(); 
    webClient.Headers.Add("user-agent", "Only a test!"); 

    string content = webClient.DownloadString("http://he.wikisource.org/wiki/%D7%A9%D7%95%D7%9C%D7%97%D7%9F_%D7%A2%D7%A8%D7%95%D7%9A_%D7%90%D7%95%D7%A8%D7%97_%D7%97%D7%99%D7%99%D7%9D_%D7%90_%D7%90"); 
+0

是的,工作,谢谢。 – dzolnjan 2010-05-08 14:41:03

+1

谢谢你 - 这对我没有解决,但你让我走上了一条轨道。作为对后续措施的警告词,请首先检查您自己的安全实施。我忘记授予我的用户执行下载的权利,并且正在接收(正确)403消息。无关的IIS服务器,客户端,用户代理或任何东西。 – 2015-06-08 15:14:17

+0

@TheSenator谢谢,在我的情况下它是IIS IP地址限制。 – joym8 2017-10-03 14:59:46

相关问题