【问题标题】:.net webclient returns 500 error, but url in browser is fine.net webclient 返回 500 错误,但浏览器中的 url 很好
【发布时间】:2015-10-08 02:29:19
【问题描述】:

当我通过 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);
 }

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

使用 Fiddler,我看到返回的页面是他们的“Site Down”页面,其中包含以下消息:“抱歉,处理您的请求时发生服务器错误。我们的团队已收到此问题的通知”。

鉴于 URL 本身在浏览器中运行良好,我能做些什么吗?有没有其他方法可以尝试排除故障?

【问题讨论】:

标签: c# .net http webclient


【解决方案1】:

另一种可能性是浏览器传递的用户首选语言。这就是导致我的问题的原因,因为 API 正在寻找它,但我没有提供它。

【讨论】:

    【解决方案2】:

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

    要修复客户端的错误,例如,您可以在发送请求之前用一个 used by IE 9 填充它:

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

    【讨论】:

    • 很好,已经解决了,谢谢!只是好奇,如果你不介意分享你是如何得出这个结论的。您是否检查了与 URL 本身的 Web 客户端连接,或者您是否能够仅从我发布的内容中弄清楚这一点?由于这只是最近才成为一个问题,因此我可以应用于潜在的未来问题的任何见解都会很棒。 =)
    • 这只是我想到的第一件事。如果您的客户端的服务器端发生错误而其他客户端没有发生错误,服务器如何区分它们? - 通常带有User-Agent 标头。对于故障排除,我刚刚检查过 - 在提琴手的 Inspectors 选项卡下有 Raw 按钮 - 它可以通过复制粘贴到任何差异工具中轻松地并排比较完整的请求。
    • frymode 谢谢,很有帮助,非常感谢! =)
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      相关资源
      最近更新 更多