Pregunta

Me buscó una alta baja y todavía no puede encontrar una respuesta definitiva.

¿Cómo se configura IIS 7.0 o una aplicación Web en IIS para que ASP.NET en tiempo de ejecución se encargará de todos peticiones -? Incluyendo los archivos estáticos como a *.js, *.gif, etc.

Lo que estoy tratando de hacer es la siguiente.

Tenemos tipo de SaaSy sitio, que podemos "marca" para cada cliente. "Branding" significa el desarrollo de una página maestra personalizada y el uso de un montón de *.css y otras imágenes.

Como es natural, estoy usando VirtualPathProvider, que funciona de esta manera:

public override System.Web.Hosting.VirtualFile GetFile(string virtualPath)
{
    if(PhysicalFileExists(virtualPath))
    {
        var virtualFile = base.GetFile(virtualPath);
        return virtualFile;
    }

    if(VirtualFileExists(virtualPath))
    {
        var brandedVirtualPath = GetBrandedVirtualPath(virtualPath);
        var absolutePath = HttpContext.Current.Server.MapPath(brandedVirtualPath);

        Trace.WriteLine(string.Format("Serving '{0}' from '{1}'", 
            brandedVirtualPath, absolutePath), "BrandingAwareVirtualPathProvider");

        var virtualFile = new VirtualFile(brandedVirtualPath, absolutePath);
        return virtualFile;    
    }

    return null;
}

La idea básica es la siguiente: tenemos una carpeta branding dentro de nuestra aplicación web, que a su vez contiene carpetas para cada "marca", la "marca" es igual al nombre de host. Es decir, las solicitudes a http://foo.example.com/ deben usar los archivos estáticos de branding/foo_example_com, mientras que http://bar.example.com/ debe utilizar el contenido de branding/bar_example_com.

Ahora lo que quiero hacer es IIS para reenviar todas las solicitudes de archivos estáticos a StaticFileHandler, que luego utilizar este conjunto "infraestructura" y servir archivos correctos. Sin embargo, mucho que lo intentaba, no puedo configurar IIS para hacer esto.

¿Fue útil?

Solución

II7 ya que si lo hace Managed Pipeline Mode del grupo de aplicaciones se establece en Integrated que es la predeterminada. En el modo integrado, ASP.NET maneja todas las peticiones incluidas las de objetos estáticos.

Si tiene que salir de su grupo de aplicaciones en Classic Mode entonces es necesario utilizar las mismas técnicas que usaría en IIS 6 para crear explícitamente manejadores para las diversas extensiones estáticas.

Información adicional basándose en los comentarios : Creo que su pieza que falta es crear una HttpHandler para manejar las otras extensiones (js, css, etc). Sin esto, a continuación, ASP.NET utilizará el manejo de este tipo de archivos por defecto. Para ello se crea una referencia al manejador que en su web.config. Este artículo es un ejemplo de la creación de un HttpHandler para archivos estáticos.

Otros consejos

Felicitaciones a todo el mundo, pero el problema era totalmente diferente en el espacio.

VirtualPathProvider no se puede utilizar en un sitio web pre-compilados. Estoy furiosa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top