Webclient non downloadfileasync lavoro
-
21-09-2019 - |
Domanda
Ho un'applicazione WPF e voglio scaricare un file.
sto usando System.Net; e io ho il seguente codice:
WebClient ww = new WebClient();
ww.DownloadFileAsync(
new Uri("http://www.sinvise.net/tester/1.jpg"),
AppDomain.CurrentDomain.BaseDirectory + "\\1.jpg");
Il problema è, è che esso non scaricare il file, è solo mostrando come file di 0kb e non scaricare, non so quale sia il problema, chiunque può aiutare?
Soluzione 3
Trovato la risposta, ho letto che DownloadFile controlla il DNS prima di qualsiasi cosa, se uso un indirizzo IP non fa il controllo e funziona immediatamente.
Grazie per tutti quanti aiutano su questo però.
Altri suggerimenti
Che ne dici di ascoltare per la DownloadFileCompleted evento e controllando il AsyncCompletedEventArgs.Error proprietà avanti dell'evento al gestore?
public static void DownLoadFileInBackground(string address)
{
WebClient client = new WebClient();
Uri uri = new Uri(address);
client.DownloadFileCompleted += (sender,e)=>
{
//inspect e here:
//e.Error
};
client.DownloadProgressChanged += (sender,e)=>
{
//e.ProgressPercentage
};
client.DownloadFileAsync(uri, "blabla");
}
Alcuni siti web bloccare le richieste che non hanno alcune intestazioni nella richiesta. In particolare quella che ho trovato in passato è il "User-Agent" header, provare a copiare un colpo di testa da una richiesta del browser e aggiungerlo nella vostra WebClient
WebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
Vorrei aggiungere che il metodo DownloadFileAsync
(non posso parlare per DownloadFile
) non funziona quando si dispone di un WebRequest esistente e non chiusa per lo stesso file. Almeno questa è la mia esperienza. Può essere che non è consentito dal quadro o server.