2015-07-01 18 views
5

Sorunum için bir çözüm buldum ama doğru yol bulamıyorum.asp dizin yolu ile rasgele bir dosya seçin.

select random file from directory

public string getrandomfile2(string path) 
{ 
    string file = null; 
    if (!string.IsNullOrEmpty(path)) 
    { 
     var extensions = new string[] { ".png", ".jpg", ".gif" }; 
     try 
     { 
      var di = new DirectoryInfo(path); 
      var rgFiles = di.GetFiles("*.*").Where(f => extensions.Contains(f.Extension.ToLower())); 
      Random R = new Random(); 
      file = rgFiles.ElementAt(R.Next(0,rgFiles.Count())).FullName; 
     } 
     // probably should only catch specific exceptions 
     // throwable by the above methods. 
     catch {} 
    } 
    return file; 
} 

Ben bu yolları kullanmak ama hiçbiri muhtemelen çalışır:

"/Images/defaultImages" 
"~/Images/defaultImages" 
"Images/defaultImages" 

doğru yolu nedir?

+2

'Random' reacreate etmeyin Görüntü dosyaları içerdiğinden emin olun deneyin:' özel statik Rastgele R = new Random(); ' –

+0

misiniz herhangi bir hata/istisna mı alıyorsunuz? –

+0

no, ancak tüm yol dönüşü boş. – distance

cevap

0

kere yapmak,

Server.MapPath("~/Images/defaultImages") 

Ayrıca defaultImages klasör

+0

' 'MapPath '' ad alanı '' Microsoft.SqlServer.Server' ' – distance

+0

Server.MapPath ad alanında mevcut değil Page namespace'dedir. Page.Server.MapPath' VEYA 'HttpContext.Current.Server.MapPath' –

+1

@rezayegane 'ı deneyin:' Server '' Server.MapPath' bir sayfa veya denetimdeyken kullanılabilir bir özelliktir. Kodunuz web içeriğinin dışındaysa 'HttpContext.Current.Server.MapPath' kullanabilirsiniz. Web bağlamında iseniz ama bir ad çakışması varsa, 'Microsoft.SqlServer.Server 'sınıfı değil, özelliği kullandığınızı belirtmek için' this.Server.MapPath' kullanabilirsiniz. – Guffa

İlgili konular