2010-11-24 17 views
5

Esto es lo que quiero hacer:¿Cómo configurar un controlador Http en IIS 7?

  1. He creado un proyecto de biblioteca de clases y esto tiene una clase que implementa la interfaz IHttpHandler. Vamos a llamar a esta clase ZipHandler. Vamos a decir que el espacio de nombres es Zip.
  2. Quiero que siempre que cualquier petición HTTP trata de un archivo zip, mi ZipHandler debe manejarlo, independientemente de si la solicitud es a una aplicación Asp.Net o un directorio virtual normales .

Consultas:

  1. ¿Es posible (se le debe dar el bombo sobre canalización integrada etc en IIS 7)?
  2. ¿Cómo hacerlo?

Respuesta

6

Aquí está la información que estaba buscando:

Si desea registrar su controlador HTTP personalizado en el nivel de IIS 7 Web Server, debe compilar el controlador HTTP en un ensamblado con nombre, y desplegarlo en la Asamblea global Caché (GAC) porque IIS 7 solo selecciona conjuntos desplegados en el GAC. Es no recoge los ensamblados implementados en ningún otro lugar, como el directorio bin de un sitio web en particular o la aplicación web .

Nuestro objetivo es agregar este controlador a nivel del servidor web. Después de implementar el controlador en GAC, abra el archivo web.config disponible en el nivel del servidor web (haga clic con el botón derecho y navegue -> abra la web.config muestran aquí) y poner algo como esto en la sección de controlador (el nombre completo de la clase):

<handlers> 
<add name=”Ch8_RssHandler” path=”*.rss” verb=”*” 
type=”ProIIS7AspNetIntegProgCh8.RssHandler, Version=1.0.0.0, Culture=neutral, 
PublicKeyToken=369d834a77” preCondition=”integratedMode” /> 
</handlers> 

Nota: Los fragmentos de información (1er párrafo y código de ejemplo) son tomadas del libro:
Professional IIS 7 and ASP.Net Integrated Programming by Dr. Shahram Khosravi

parece un libro muy agradable :)

3

Este artículo de MSDN How to: Configure an HTTP Handler Extension in IIS explica lo que tendrá que hacer. Ver el párrafo para el modo integrado.

La extensión de nombre de archivo para .zeip debe registrarse tanto en el elemento httpHandlers como en el elemento de controladores.

Tendrá que hacer clic en Agregar controlador administrado en el panel Acciones.

Usar el Administrador de IIS en IIS 7.0 para agregar una extensión de controlador personalizado es equivalente a registrar la extensión del controlador en el archivo Web.config.

1

hice una prueba en VS2012

Mi manejador es como esta

namespace MyProject 
{ 
    public class ZipHandler: IHttpHandler 
    { 
     public bool IsReusable { get { return true; } } 
     public void ProcessRequest(HttpContext context) { ... } 
    } 
} 

Mi web.config es

<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.webServer> 
    <handlers> 
     <add 
     name="ZipHandler" 
     path="*.zip" 
     verb="*" 
     type="MyProject.ZipHandler" 
     preCondition="integratedMode" 
     /> 
    </handlers> 
    </system.webServer> 

</configuration> 

De esta manera puedo pedir "foo.zip" y tener mi manejador recibirá la petición.

También hay una publicación de Rick Strahl que puede ayudarlo a solucionar problemas relacionados con controladores y módulos: HttpModule and HttpHandler sections in IIS 7 web.config files