سؤال

حصلت على تطبيق 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 موجود وغير مغلّر لنفس الملف. على الأقل هذا هو تجربتي. قد لا يسمح به الإطار أو الخادم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top