2012-01-04 21 views
106

Esiste un modo per creare una directory virtuale in IIS express? So che Cassini non può farlo e sarebbe bello poterlo fare senza usare una versione completa di IIS.Creazione di directory virtuali in IIS express

li ho finora che posso passare in rassegna alla mia applicazione a livello locale in IIS esprimono in questo modo:

http://localhost:1132/

Quello che vorrei fare è creare una directory virtuale denominata "OffSiteStuff" e puntare ad una certa posizione sul mio disco C, come "c: \ offsitestuff" e quindi individuare gli elementi in quella cartella come questo:

http://localhost:1132/OffSiteStuff/UserUploadedImage.jpg

so che avrei potuto fare questo con una cartella all'interno della mia sito e utilizzare ancora IIS Express, o, per quel che riguarda la vecchia Cassini, ma questa cartella memorizzerà le immagini caricate dagli utenti e non voglio davvero che queste immagini siano confuse con i file dell'applicazione.

L'altra soluzione "go big" consiste nel distribuire il sito su un'istanza di IIS 7.5 Server 2008 in esecuzione completa ogni volta che si desidera eseguire il debug delle funzionalità che utilizzano il contenuto offsite, ma anche questo è un po 'ingombrante.

C'è un modo per farlo nell'elemento di configurazione Web <System.WebServer />?

+4

Per Visual Studio 2015, https: //mikedice417.wordpress.com/2015/09/13/vs-2015-and-you-must-specificare-localhost-for-the-server-name/ha funzionato. Il file 'applicationHost.config' si trova nella root del progetto:' $ {PROJECT} \. Vs \ config \ applicationHost.config'. – Matt

+0

Qui c'è una risposta che potrebbe aiutarti: [https://stackoverflow.com/a/46260607/2472664](https://stackoverflow.com/a/46260607/2472664) –

risposta

121

La configurazione di IIS Express è gestita da applicationhost.config.
Lo si può trovare in

Utenti \ nomeutente <> \ Documenti IISExpress \ cartella \ config.

All'interno è possibile trovare la sezione siti che contiene una sezione per ogni sito configurato IIS Express.

aggiungere (o modificare) una sezione di sito come questo:

<site name="WebSiteWithVirtualDirectory" id="20"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="c:\temp\website1" /> 
    </application> 
    <application path="/OffSiteStuff" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="d:\temp\SubFolderApp" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:1132:localhost" /> 
    </bindings> 
</site> 

In pratica è necessario aggiungere un nuovo tag applicazione nel vostro sito per ogni directory virtuale. Si ottiene un sacco di flessibilità, perché è possibile impostare diverse configurazioni per la directory virtuale (ad esempio una diversa versione di .NET Framework)

EDIT Grazie a Fevzi Apaydin per puntare a una soluzione più elegante.

È possibile ottenere lo stesso risultato con l'aggiunta di uno o più virtualDirectory tag per il tag Application:

<site name="WebSiteWithVirtualDirectory" id="20"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="c:\temp\website1" /> 
    <virtualDirectory path="/OffSiteStuff" physicalPath="d:\temp\SubFolderApp" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:1132:localhost" /> 
    </bindings> 
</site> 

Riferimento:

+0

Dopo aver aggiunto ogni tag di applicazione per ogni Virtual directory non ero in grado di eseguire l'applicazione "offsitestuff". Es: iisexpress/site: WebSiteWithVirtualDirectory - esegue la prima app dal percorso "C: \ temp \ website1". Come posso eseguire la mia seconda app che contiene il percorso "d: \ temp \ SubFolderApp" – Velu

+0

Nella sezione binding viene visualizzato l'url e la porta utilizzati per accedere alla directory principale del sito. Quindi: http: // localhost: 1132 è l'URL per l'applicazione Web installata in c: \ temp \ website1 http: // localhost: 1132/OffSiteStuff è l'URL per l'applicazione Web installata in d: \ temp \ SubFolderApp . –

+0

Qualcuno sa se/come posso configurare le impostazioni separatamente per ogni progetto (quindi posso controllare la configurazione)? Grazie –

0

avevo qualcosa altrimenti, i file stessi dove non sono accessibili ible in un ambiente SBS.

Elimina i file nella cartella config (se non riesci ad aprirli!) e sostituirli con una copia della cartella sul proprio PC locale.

fisso per me :)

+0

I file negli utenti \ \ Documents \ IISExpress \ config sono protetti per utente. Forse hai provato a modificarlo con un altro utente. Quindi per modificarlo devi eseguire il Blocco note (o il tuo editor) in modalità Amministrazione. In questo modo sei in grado di modificarlo. Oppure cancella e copia come hai fatto :-) –

80

@ aprroach di Be.St. è vero, ma incompleta. Sto solo copiando la sua spiegazione correggendo la parte errata.

La configurazione di IIS express è gestita da applicationhost.config.
Lo si può trovare in

Utenti \ nomeutente <> \ Documenti IISExpress \ cartella \ config.

All'interno è possibile trovare la sezione siti che contiene una sezione per ogni sito configurato IIS Express.

aggiungere (o modificare) una sezione di sito come questo:

<site name="WebSiteWithVirtualDirectory" id="20"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="c:\temp\website1" /> 
    <virtualDirectory path="/OffSiteStuff" physicalPath="d:\temp\SubFolderApp" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:1132:localhost" /> 
    </bindings> 
</site> 

Invece di aggiungere un nuovo blocco di applicazione, si deve solo aggiungere un nuovo elemento virtualDirectory all'elemento genitore applicazione.

Edit - Visual Studio 2015

Se siete alla ricerca di file applicationHost.config e si sta usando VS2015 lo troverete in:

[solution_directory]/.VS/config/applicationHost.config

+3

Esiste comunque l'applicazione all'interno del progetto Visual Studio? In un ambiente multi-sviluppatore, se qualcun altro controlla il codice sul proprio computer, il loro IIS Express locale non verrebbe configurato con la directory virtuale e causerebbe errori di runtime no? – ahillier88

+4

In Visual Studio 2015, il file di configurazione di IIS viene memorizzato nella directory della soluzione, in una cartella denominata .vs/config, in modo da poterlo controllare nel controllo del codice sorgente, se lo si desidera. –

+0

Così tante non risposte sommergono i risultati di Google per questa domanda in relazione a VS 2012. Funziona !!!! –

6

in VS2013 ho fatto nei seguenti passi:

1.Fare clic destro progetto di applicazione web e ha colpito Proprietà

2.Aprire la scheda "Web" della pagina Proprietà

server 3.Under, con "IIS Express" è la scelta di default del menu a discesa, in "Url del progetto" cambia l'url usando il numero di porta in uno che ti si addice. Ad esempio ho cancellato il numero di porta e aggiunto "/ MVCDemo4" dopo il localhost.

4. Fare clic sul pulsante "Crea directory virtuale".

5.Run il progetto e il nuovo URL verrà utilizzato

+0

Questo non consente di configurare il percorso fisico. –

0

Se si utilizza Visual Studio 2013 (potrebbe richiedere la versione Pro o successiva), è stato possibile aggiungere una directory virtuale a un sito Web IIS Express (basato su file) facendo clic con il pulsante destro del mouse sul sito Web in Esplora soluzioni e facendo clic su Aggiungi> Nuova directory virtuale. Ciò ha aggiunto una voce al file applicationhost.config come con i metodi manuali descritti qui.

Problemi correlati