2015-07-01 6 views
5

Ho trovato una soluzione per il mio problema ma non ho il percorso corretto.asp seleziona il file casuale dalla directory con il percorso del server

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; 
} 

io uso questi percorsi, ma nessuno funziona probabilmente:

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

qual è il percorso corretto?

+2

Non reacreate 'Random', farlo una volta:' Static Random R = new Random privato(); ' –

+0

Sei ottenere qualche errore/eccezione? –

+0

no, ma tutti i percorsi restituiscono null. – distance

risposta

0

Prova

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

anche assicurarsi che la cartella defaultImages contiene file immagine

+0

lo spazio dei nomi' "MapPath" 'non esiste nello spazio dei nomi' "Microsoft.SqlServer.Server" ' – distance

+0

Server.MapPath appartiene allo spazio dei nomi Pagina. Prova 'PageServer.MapPath' O' HttpContext.Current.Server.MapPath' –

+1

@rezayegane: Il 'Server' in' Server.MapPath' è una proprietà disponibile quando ti trovi in ​​una pagina o un controllo. Puoi usare 'HttpContext.Current.Server.MapPath' se il tuo codice è al di fuori del contesto web. Se si è nel contesto Web ma si verifica un conflitto di nomi, è possibile utilizzare 'this.Server.MapPath' per specificare che si utilizza la proprietà, non la classe' Microsoft.SqlServer.Server'. – Guffa

Problemi correlati