Domanda

Sto usando questo codice per il mio LinkButton per scaricare un programma quando si fa clic su di esso. Recentemente ho avuto questo problema, ho bisogno di un percorso virtuale.

vorrei reindirizzamento a C:\inetpub\wwwroot

 string filepath = Server.MapPath("...");           
 FileInfo myfile = new FileInfo(filepath);

Quindi non so cosa mettere in Server.MapPath (), perché se metto / andrà alla base dei miei documenti di cartella e non in

È stato utile?

Soluzione

Se avete bisogno di servire i file da un'altra parte del vostro sistema, allora il modo migliore per farlo è quello di creare una directory virtuale .

In IIS mano destra clic sul tuo sito web, fare clic su 'Aggiungi directory virtuale'. Dategli un nome e puntare dovunque è necessario che sia. Per esempio. puntamento nuova directory virtuale denominata 'files' a 'C: \ inetpub \ wwwroot \ files'.

Poi dall'interno del sito è possibile fare riferimento questi file utilizzando

/files/filename.txt <-. / file / si collegherà alla vostra directory virtuale

sarà poi naturalmente necessità di assicurarsi di avere le autorizzazioni impostate correttamente per leggere questi file, ma lascerà che a voi.

Altri suggerimenti

Al momento è vedere una cartella sotto il tuo My Documents perché si esegue / debug nella cartella del progetto, probabilmente utilizzando il server di sviluppo o IISExpress.

Non appena si distribuisce il vostro sito in una cartella sotto C:\Inetpub, il MapPath restituirà quella cartella.

Ma, come misura di sicurezza, non è possibile restituire un cartella superiore (nella struttura), come la cartella principale dall'applicazione.

Se avete bisogno di questo, è necessario rimuovere le cartelle dal percorso restituito da soli. È possibile utilizzare System.IO.Path per questo.

Non sei autorizzato a spostarsi verso l'alto dalla radice. La radice significa la cartella principale dell'applicazione. Se si sta tentando così, si tratta di una violazione della sicurezza.

Quindi, se si vuole andare alla radice dell'applicazione è possibile utilizzare Server.MapPath("~");

Server.MapPath("~"); 

vi darà radice dell'applicazione Web corrente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top