2013-02-17 10 views
6

Ich versuche, eine Webseite mit webclient herunterladen und nutzen Sie die 500 internen Fehlerwebclient Der Remote-Server hat einen Fehler zurückgegeben: (500) Internal Server Error

public class AsyncWebClient 
    { 
     public string GetContent(string url) 
     { 
      return GetWebContent(url).Result.ToString(); 
     } 
     private Task<string> GetWebContent(string url) 
     { 
      var wc = new WebClient(); 
      TaskCompletionSource<string> tcs = new TaskCompletionSource<string>(); 

      wc.DownloadStringCompleted += (obj, args) => 
      { 
       if (args.Cancelled == true) 
       { 
        tcs.TrySetCanceled(); 
        return; 
       } 

       if (!String.IsNullOrEmpty(args.Result)) 
        tcs.TrySetResult(args.Result); 
      }; 

      wc.DownloadStringAsync(new Uri(url)); 
      return tcs.Task; 
     } 
    } 

und rufe:

var wc =new AsyncWebClient(); 
var html = wc.GetContent("http://truyen.vnsharing.net/"); >> always get the above error 

Wenn ich eine andere Seite verwende, dann funktioniert es gut. Ich weiß nicht, was auf dieser Seite besonders ist.

Bitte helfen Sie !!

Antwort

13

Der Server erwartet höchstwahrscheinlich einen korrekten User-Agent.

Aktualisieren Sie Ihren Code auf die folgenden:

var wc = new WebClient(); 
wc.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 
TaskCompletionSource<string> tcs = new TaskCompletionSource<string>(); 
+0

Dank für alle Antwort. weiß das wirklich zu schätzen. –

+1

Wenn möglich, bitte nicht einen Browser zu imitieren. – svick

+0

svick was ist der Grund dafür, sich nicht als Browser im Code auszugeben? – rolls