Forum

Download metod yava...
 
Bildirimler
Hepsini Temizle

Download metod yavaşlıgı hakkında

7 Yazılar
2 Üyeler
0 Reactions
519 Görüntüleme
(@sinemerkan)
Gönderiler: 234
Reputable Member
Konu başlatıcı
 

Asp.net Gridview üzerinde Linkbutona baglı Download metodum var FTP den dosya indiriyor 50 MB üzeri oldugunda indirme çok gec baslıyor .

 

FtpWebResponse response = (FtpWebResponse)request.GetResponse();

MemoryStream stream = new MemoryStream();

stream.Position = 0;

response.GetResponseStream().CopyTo(Response.OutputStream);

Response.ContentType = "application/force-download";

Response.AddHeader("content-disposition", "attachment;filename=" + fileName);

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Response.BinaryWrite(stream.ToArray());

this.Response.End();

 

Breakpoint atdıgımda aşağıdaki blokda bekledigini test etdim .

response.GetResponseStream().CopyTo(Response.OutputStream); 

 
Gönderildi : 25/12/2015 13:36

(@eravse)
Gönderiler: 1753
Üye
 

Async method kullanmayı denedınız mı ?

public void DownloadFileAsync(
	Uri address,
	string fileName,
	object userToken
)

https://msdn.microsoft.com/en-us/library/ms144197%28v=vs.110%29.aspx

saygılarımla

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 25/12/2015 17:02

(@sinemerkan)
Gönderiler: 234
Reputable Member
Konu başlatıcı
 

Hocam baktım ama kendime uygulayamadım ,Birde genelde HTTP üzerinden PDF vs. gibi küçük dosyalar indiren projeler vardı ,Yukarıdaki metod sadece 50 MB üzeri dosyalarda indirme işlemini geç başlatıyor ama başladıkdan sonra normal hızda iniyor .

 
Gönderildi : 26/12/2015 00:50

(@eravse)
Gönderiler: 1753
Üye
 

merhaba buffer yöntemi ile denediniz mi bir örnek

   DateTime startTime = DateTime.UtcNow;
        WebRequest request = WebRequest.Create("http://www.example.com/largefile");
        WebResponse response = request.GetResponse();
        using (Stream responseStream = response.GetResponseStream()) {
            using (Stream fileStream = File.OpenWrite(@"c:\temp\largefile")) { 
                byte[] buffer = new byte[4096];
                int bytesRead = responseStream.Read(buffer, 0, 4096);
                while (bytesRead > 0) {       
                    fileStream.Write(buffer, 0, bytesRead);
                    DateTime nowTime = DateTime.UtcNow;
                    if ((nowTime - startTime).TotalMinutes > 5) {
                        throw new ApplicationException(
                            "Download timed out");
                    }
                    bytesRead = responseStream.Read(buffer, 0, 4096);
                }
            }
        }

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 26/12/2015 21:22

(@sinemerkan)
Gönderiler: 234
Reputable Member
Konu başlatıcı
 

Hocam yukaıdaki Metod ile webde sayfası üzerinden host da olan bi dosyayı kendi lokal diskime kaydedilemez diye biliyorum , yani sizin verdiginiz c:\temp aslında hostdaki sunucunu c:\temp klasoru olurmu yada kendi klasorum olursada access denied hatası alırmıyım ?

 
Gönderildi : 29/12/2015 12:46

(@eravse)
Gönderiler: 1753
Üye
 

merhaba yukarıdakı kod ornektı yazabılırsınız c:\temp klasoru acarsınız ııs uzerıne ona yazma yetkısı verırsınız vb. ama asıl sız o satırı

string physicalPath = HttpContext.Current.Request.MapPath(appPath); gıbı kendı upload yada donwload kasorunuz 
yapmalasınız yonetım acısından dogru olan bu. kendi klasorunuz olursa access deneid alabilirsiniz en azından sunucuda local makınanızda local admin olabiirsiniz.

Bunun ıcın ızınlerı kontrol etmelisiniz.

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 29/12/2015 13:07

(@sinemerkan)
Gönderiler: 234
Reputable Member
Konu başlatıcı
 

Hocam zaten burdaki amac sunucuda FTP olan dosyayı kişinin kendi bilgisayarına indirmesi , Yoksa sunucudaki A klasorundeki yine Sunucudaki B klasorune indirmenin bi anlamı yok , Benim ilk yazdıgım Metodu biraz bakıcam hangi Stream Metodu performans için uygun , Tşkler .

 
Gönderildi : 29/12/2015 15:15

Paylaş: