2012-01-04 34 views
106

¿Hay alguna manera de crear un directorio virtual en IIS express? Sé que Cassini no puede hacer esto y sería bueno poder hacer esto sin usar una versión completa de IIS.Crear directorios virtuales en IIS express

lo tengo tan lejos que puedo ver a mi aplicación a nivel local en IIS expresan así:

http://localhost:1132/

lo que me gustaría hacer es crear un directorio virtual llamado "OffSiteStuff" y apunte a algún lugar en mi unidad C, como "c: \ offsitestuff" y busque artículos en esa carpeta así:

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

sé que podría hacer esto con una carpeta dentro de mi y aún uso IIS Express, o, para el caso, la vieja Cassini, pero esta carpeta almacenará las imágenes cargadas por los usuarios y realmente no quiero que estas imágenes se mezclen con los archivos de la aplicación.

La otra solución para "ir a lo grande" es implementar el sitio en una instancia Server IIS 7.5 completa cada vez que quiero depurar las funciones que usan contenido externo, pero eso también es un poco engorroso.

¿Hay alguna manera de hacerlo en el elemento de configuración web <System.WebServer />?

+4

Para Visual Studio 2015, https: //mikedice417.wordpress.com/2015/09/13/vs-2015-and-you-must-specify-localhost-for-the-server-name/worked. El archivo 'applicationHost.config' está debajo de la raíz del proyecto:' $ {PROJECT} \. Vs \ config \ applicationHost.config'. – Matt

+0

Aquí hay una respuesta que podría ayudarlo: [https://stackoverflow.com/a/46260607/2472664](https://stackoverflow.com/a/46260607/2472664) –

Respuesta

121

La configuración de IIS express es administrada por applicationhost.config.
Puede encontrarlo en

Users \ < nombre de usuario> \ Documents carpeta \ IISExpress \ config.

En el interior puede encontrar la sección de sitios que contiene una sección para cada sitio configurado de IIS Express.

Añadir (o modificar) una sección de sitio como este:

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

Prácticamente es necesario agregar una nueva etiqueta de aplicación en su sitio para cada directorio virtual. Se obtiene una gran flexibilidad porque se puede establecer la configuración diferente para el directorio virtual (por ejemplo, una versión de .NET Framework diferente)

EDITAR Gracias a Fevzi Apaydın para que apunte a una solución más elegante.

Puede lograr mismo resultado mediante la adición de uno o más VirtualDirectory etiqueta para la etiqueta de aplicación:

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

Referencia:

+0

Después de agregar cada etiqueta de aplicación para cada Virtual directorio no pude ejecutar la aplicación "offsitestuff". Ex: iisexpress/site: WebSiteWithVirtualDirectory: ejecute la primera aplicación desde la ruta "C: \ temp \ website1". ¿Cómo puedo ejecutar mi segunda aplicación que contiene la ruta "d: \ temp \ SubFolderApp" – Velu

+0

En la sección de enlaces, verá la url y el puerto utilizados para acceder a la raíz de su sitio. Entonces: http: // localhost: 1132 es la url para la aplicación web instalada en c: \ temp \ website1 http: // localhost: 1132/OffSiteStuff es la url para la aplicación web instalada en d: \ temp \ SubFolderApp . –

+0

¿Alguien sabe si/cómo puedo configurar los ajustes por separado para cada proyecto (para que pueda verificar la configuración)? Gracias –

0

que tenía algo de lo contrario, los archivos en sí eran inaccesibles ible en un entorno SBS.

Borre los archivos en la carpeta config (¡si no puede abrirlos!) y reemplazarlos con una copia de la carpeta en su propia PC local.

arreglaron para mí :)

+0

Los archivos en Users \ \ Documents \ IISExpress \ config están protegidos por usuario. Quizás haya intentado editarlo con un usuario diferente. Para editarlo, necesita ejecutar el Bloc de notas (o su editor) en el modo de Administración. De esta forma, puedes modificarlo. O elimine y copie como lo hizo :-) –

80

@ aprroach de Be.St. es cierto, pero incompleto. Estoy copiando su explicación al corregir la parte incorrecta.

La configuración de IIS express está gestionada por applicationhost.config.
Puede encontrarlo en

Users \ < nombre de usuario> \ Documents carpeta \ IISExpress \ config.

En el interior puede encontrar la sección de sitios que contiene una sección para cada sitio configurado de IIS Express.

Añadir (o modificar) una sección de sitio como este:

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

En lugar de añadir un nuevo bloque de aplicación, sólo debe añadir un nuevo elemento VirtualDirectory al elemento de aplicación principal.

Editar - Visual Studio 2015

Si usted está buscando el archivo applicationHost.config y está utilizando VS2015 lo encontrará en:

[solution_directory]/.vs/config/applicationHost.config

+3

¿Hay alguna forma de aplicar esto dentro del proyecto de Visual Studio? En un entorno de varios desarrolladores, si alguien más verifica el código en su máquina, entonces su IIS Express local no se configuraría con el directorio virtual y causaría errores de tiempo de ejecución, ¿no es así? – ahillier88

+4

En Visual Studio 2015, el archivo de configuración de IIS se almacena en el directorio de la solución, en una carpeta llamada .vs/config, para que pueda verificarlo en el control de código fuente si lo desea. –

+0

Tantas respuestas inesperadas inundan los resultados de google para esta pregunta en relación con VS 2012. ¡Esto funciona! –

6

en VS2013 hice esto en los siguientes pasos:

1.Haga clic en el proyecto de aplicación web y pulse Propiedades

2.View la ficha "Web" de la página Propiedades

Servidores 3.Under, con "IIS Express" es la opción por defecto de la menú desplegable, en la "URL del proyecto", cambie la URL usando el número de puerto a la que más le convenga. Por ejemplo, borré el número de puerto y agregué "/ MVCDemo4" después del localhost.

4.Haga clic en el botón "Crear directorio virtual".

5.Run su proyecto y la nueva dirección URL será utilizado

+0

Esto no le permite configurar la ruta física. –

0

Si está usando Visual Studio 2013 (puede requerir una edición Pro o superior), pude agregar un directorio virtual a un sitio web IIS Express (basado en archivos) haciendo clic derecho en el sitio web en el Explorador de soluciones y haciendo clic en Agregar> Nuevo directorio virtual. Esto agregó una entrada al archivo applicationhost.config como con los métodos manuales que se describen aquí.

Cuestiones relacionadas