2011-11-14 24 views
0

このコードは例外をスローします。それを修正するには?DownloadFileが内部サーバーエラーをスローします

string uriString = "http://www.fileserve.com/login.php"; 

NameValueCollection postvals = new NameValueCollection(); 
postvals.Add("loginUserName", "aaaa"); 
postvals.Add("loginUserPassword", "xxxx"); 
postvals.Add("autoLogin", "on"); 
postvals.Add("loginFormSubmit", "Login"); 

WebClient myWebClient = new WebClient(); 
myWebClient.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7"); 
myWebClient.UploadValues(uriString, "POST", postvals); 

string cookiestr = myWebClient.ResponseHeaders.Get("Set-Cookie"); 
myWebClient.Headers.Add("Cookie", cookiestr); 
myWebClient.DownloadFile(new Uri("http://fileserve.com/file/2jkYtZS"), "C:\\temp\\" + Path.GetFileName("http://www.fileserve.com/file/2jkYtZS/some.avi")); 

例外がmyWebClient.DownloadFile()メソッドによってスローされます:

The remote server returned an error: (500) Internal Server Error. 
     at System.Net.WebClient.DownloadFile(Uri address, String fileName) 
    at SimonDownloader2.Program.Main(String[] args) in C:\Users\Simon\Workspace\C#\Projects\SerialDownloader2\SerialDownloader2\Program.cs:line 32 
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 
+1

これはサーバーの問題です。 – SLaks

+0

'Set-Cookie'レスポンスヘッダのデータは、通常、' Cookie'リクエストヘッダのデータとしては互換性がありません。 –

+0

いつでもWiresharkを起動してトラフィックを記録できます。たとえば、すべてのPOST値がアップロードされていますか? MSDNには、UploadValuesが1つの値だけをアップロードするというコメントがあります。http://msdn.microsoft.com/en-us/library/system.net.webclient.uploadvalues(v=VS.100).aspx – kol

答えて

1

あなたは正しくそこに使用しようとしているものは何でも、サーバーのコード(それはあなたの場合)、または使用を修正します。

これはDownloadFileとエラーではありませんが、あなたが戻っにエラーHTTP 500を接続しているサーバは、だから私は、サーバーは好きではない何かをしようと思います。たぶんあなたは少なくともページを取得する前に、あるいは適切なクッキーセットを持っているかどうかにかかわらず、ログインするはずがありません。

これをデバッグする最も簡単な方法は、恐らくFiddlerを使用して、ブラウザで行っていることをブラウザで行い、相互作用を見て、コード内で何が間違っているのかを試してみることです。

+0

+1。 WireSharkも役立つかもしれません。 – kol

+0

コール:HTTPだけを扱っている限り、Fiddlerははるかに簡単なルートのようです。下位プロトコルを解読する必要もありません。 – Joey

+0

私は職場で両方を使いました。私はWireSharkを好むだけです。なぜなら、HTTPに加えて分析しなければならない他の多くのトラフィックタイプがあるからです。 Fiddlerの主な利点は、HTTPSトラフィックを分析して操作できることです。 – kol

0

これはfileserve.com側の問題です。また、そのサーバーを実行しない限り、修正することはできません。

これは、リクエストに応じて送信する予期しないパラメータが原因で発生している可能性があります。どの名前が犯人かを特定するまで、その名前の値のコレクションに値を少なくすることから始めます。

関連する問題