WebClient DownloadFileasync لا يعمل
-
21-09-2019 - |
سؤال
حصلت على تطبيق WPF وأريد تنزيل ملف.
أنا أستخدم System.net ؛ ولدي الرمز التالي:
WebClient ww = new WebClient();
ww.DownloadFileAsync(
new Uri("http://www.sinvise.net/tester/1.jpg"),
AppDomain.CurrentDomain.BaseDirectory + "\\1.jpg");
المشكلة هي أنه لا يقوم بتنزيل الملف ، فهو يظهر فقط كملف 0kb وعدم التنزيل ، لا أعرف ما هي المشكلة ، هل يمكن لأي شخص أن يساعد؟
المحلول 3
وجدت الإجابة ، قرأت أن DownloadFile يتحقق من DNS أولاً قبل أي شيء ، إذا استخدمت عنوان IP ، فهذا لا يقوم بالتحقق ويعمل على الفور.
شكرا على الجميع مساعدة في هذا.
نصائح أخرى
ماذا عن الاستماع ل DownloadFileCompleted الحدث والتحقق من asynccompletedeventargs.error الخاصية توجيه الحدث إلى معالجك؟
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");
}
بعض مواقع الويب تمنع الطلبات التي لا تحتوي على رؤوس معينة في الطلب. على وجه الخصوص ، وجدته في الماضي هو رأس "عامل المستخدم" ، حاول نسخ رأس من طلب المتصفح وأضفه إلى webclient
WebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
أود أن أضيف أن DownloadFileAsync
الطريقة (لا أستطيع التحدث عنها DownloadFile
) لا يعمل عندما يكون لديك WebRequest موجود وغير مغلّر لنفس الملف. على الأقل هذا هو تجربتي. قد لا يسمح به الإطار أو الخادم.