.net webclient返回500错误,但浏览器中的url很好

CGr*_*oss 4 .net c# webclient http

当我通过Web客户端连接到URL时,它返回500内部服务器错误.我可以在浏览器中访问该URL.这工作了几个月,问题从昨天开始.我的结局没有变化.我知道500状态代码是一个服务器错误,但我想知道在这一点上我还能做些什么,因为我吓坏了.

示例网址:http://www.myfitnesspal.com/reports/printable_diary/chuckgross? from = 2015-07-17&to= 2015-07-17

代码:

 string results;
 using (var client = new WebClient())
 {
    results = client.DownloadString(url);
 }
Run Code Online (Sandbox Code Playgroud)

这给出了异常:远程服务器返回错误:500.

使用Fiddler,我看到返回的页面是他们的"站点关闭"页面,其中包含以下消息:"抱歉,处理您的请求时出现服务器错误.我们的团队已收到有关该问题的通知".

鉴于URL本身在浏览器中正常工作,我能做些什么吗?尝试进行故障排除的其他方法有哪些?

dew*_*led 10

他们似乎试图通过查询User-Agent标题来检测服务器端的浏览器版本,但不要指望它丢失.

要在客户端修复错误,您可以在发送请求之前将其填充为IE 9使用的错误:

client.Headers["User-Agent"] = "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)";
Run Code Online (Sandbox Code Playgroud)

  • 这是我想到的第一件事.如果客户端在服务器端发生错误而其他情况不会发生错误,服务器如何区分它们? - 通常使用`User-Agent`标头.为了排除故障,我刚检查了 - 在fiddler的`Inspectors`选项卡下有`Raw`按钮 - 它可以通过复制粘贴到任何差异工具轻松地将完整的请求并排比较. (3认同)

Ale*_*dro 0

当服务器在使用该类时返回 HTTP 错误时,收到异常是正常的,WebClient这表明服务器无法成功完成请求。但这并不意味着它没有返回正确的 html 响应。您应该捕获异常,您可以在stream其中获取响应对象并从中提取数据。