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

时间:2015-07-18 13:17:13

标签: c# .net http webclient

当我通过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本身在浏览器中正常工作,我能做些什么吗?尝试进行故障排除的其他方法吗?

2 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:0)

当服务器在使用stream类时返回HTTP错误时收到异常是正常的,它表示服务器无法成功完成请求。但这并不意味着它没有返回正确的HTML响应。您应该捕获异常,您可以在其中获取响应<script type="text/javascript"> var files = $('#TARGET_TO_FILES_INPUT').prop('files'); var data = new FormData(); $.each(files, function(key,val){ data.append(key,val); }); $.ajax({ type:"POST",// post method url:UPLOAD_FILE,// path to file upload data:data,// image and any other form data cache:false,// stop any caching of browser dataType:'json',// return json when complete processData:false,// stop preprocessing of data by jquery (ie querystring) contentType:false,// must be set to false; turns off default "application/x-www-form-urlencoded; charset=UTF-8" success:function(o){ // successful upload stuff goes here }, xhr:function(){ var xhr = $.ajaxSettings.xhr() ; xhr.upload.onprogress = function(evt){ //progress bar stuff goes here } xhr.upload.onload = function(){ //just before upload stuff goes here } return xhr ; } }); </script> 对象并从中提取数据。