2011-06-21 50 views
8

Escribí esta pequeña aplicación web que enumera los sitios web que se ejecutan en los directorios virtuales IIS + locales adjuntos a los sitios web.IIS 7 - ¿Ruta de redireccionamiento del directorio virtual?

Usando la siguiente línea pude obtener la URL de redirección HTTP de un directorio virtual, si se ha establecido para redirigir:

_directoryEntry.Properties["HttpRedirect"].Value.toString() 

que funciona bastante bien en IIS 6 - pero el valor está vacío cuando Intento mi aplicación en un IIS 7 y también intenté cambiar el grupo de aplicaciones a Classic pipeline. ¿Qué ha cambiado en IIS 7 aquí? ¿Y por qué?

Respuesta

1

¿Qué ha cambiado ?: IIS7 tiene un sistema de configuración completamente nuevo similar al sistema de configuración jerárquica de .NET. Consulte este enlace para obtener más información sobre here sobre lo que ha cambiado.

Cómo obtener el valor de HttpRedirect: En C#, en lugar de utilizar el espacio de nombres System.DirectoryServices para acceder a la configuración de IIS, utilice el nuevo Microsoft.Web.Administration.dll.

El código debería ser algo así como este ejemplo de IIS.net:

using System; 
using System.Text; 
using Microsoft.Web.Administration; 

internal static class Sample 
{ 
    private static void Main() 
    { 
     using (ServerManager serverManager = new ServerManager()) 
     { 
     Configuration config = serverManager.GetWebConfiguration("Default Web Site"); 
     ConfigurationSection httpRedirectSection =         config.GetSection("system.webServer/httpRedirect"); 
     Console.WriteLine("Redirect is {0}.", httpRedirectSection["enabled"].Equals("true") ? "enabled" : "disabled"); 

     } 
    } 
} 

En realidad se puede hacer mucho con el nuevo Microsoft.Web.Administration.dll. Consulte el blog de Carlos Ag here para obtener algunas ideas.

Dos notas rápidas:

  • Microsoft.Web.Administration.dll está disponible si el "Secuencias de comandos de administración de IIS y Herramientas" está instalado servicio de función. Debe estar bajo el directorio inetsrv en systemroot.
  • Cualquier código que ejecute con MWA dll debe ejecutarse como Administrador para acceder a la configuración de IIS, por lo que solo debe asegurarse de que la cuenta que ejecuta el script tenga derechos de administrador.

Espero que ayude!

6

En IIS7 <httpRedirect> elemento reemplaza la propiedad IIS 6.0 HttpRedirect metabase.

Necesitas configurarlo como este en su web.config archivo:

<system.webServer> 
    <httpRedirect enabled="true" destination="WebSite/myDir/default.aspx" />" 
    </system.webServer> 

Si no desea modificar web.config, este artículo habla de una manera de hacer que la forma de IIS 6: Creating Http Redirects in IIS7 on Virtual Directories like IIS6

Espero que esto ayude.

+0

Así que no hay una manera fácil para mí para editar/manipular las rutas usando el código (es decir, C#)? Tiene que ser un cmd o web.config? – Dynde

+0

Lo único que esto cambia es ** cómo ** configura IIS. IIS6 se realizó a través de metabase, IIS7 a través de 'web.config'. – Mrchief

Cuestiones relacionadas