2009-06-05 20 views
6

He creado un proyecto de muestra para simplificar mi problema. Tengo este sencillo manejador:HTTP Handler funciona usando Cassini, pero no con IIS 6

public class HandleThis : IHttpHandler, IRequiresSessionState 
{ 

    public void ProcessRequest(System.Web.HttpContext context) 
    { 
     // Score.aspx just says "success" 
     context.Response.Redirect("Score.aspx"); 
    } 

    public bool IsReusable { get { return true; } } 
} 

Entonces, en mi config, tengo esto:

<httpHandlers> 
<add verb="*" 
path="Survey" 
type="HttpHandlerTest.HandleThis, HttpHandlerTest" /> 

Ahora, cuando me golpeó http://server/Survey mis fuegos de controlador.

Si cambio mi proyecto para ejecutarlo con IIS 6, no se disparará (404). me trataron de forma manual añadiendo el controlador en IIS a través de: - Propiedades del Sitio Web - Directorio principal - Configuración - Añadir (vaya a .dll de mi sitio), Extensión: Encuesta, desactive "Compruebe que existe ese archivo"

Noto que IIS (tan útilmente) agrega el "." frente a mi extensión, así que llegué al sitio con "b.Survey"; Todavía 404.

¿Sin duda es posible agregar un controlador en IIS 6?

Respuesta

6

"He intentado añadir manualmente el controlador en IIS a través de: - Propiedades del Sitio Web - Inicio Directorio - Configuración - Añadir (vaya a .dll de mi sitio), Extensión: Encuesta, desactive Compruebe que existe ese archivo"

Parece que estás usando la ruta "ejecutable" incorrecta. La ruta ejecutable debe apuntar a aspnet isapi dll, no a la DLL que contiene su implementación de HttpHandler.

Intente utilizar la misma ruta que la extensión .aspx está asignada (a menudo esto es: c: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll).

+0

Cuando lo hago, recibo una respuesta completamente vacía. – dudeNumber4

+0

Supongo que en realidad no se lo redirige a Score.aspx? ¿Está navegando hacia http: // server/survey/URL con un mapeo de comodín (*) en IIS? – etorrejon

+0

Acabo de darme cuenta de mi problema; después de cambiar la ruta del ejecutable para apuntar a aspnet, necesitaba corregir lo que tenía en mi configuración (había cambiado la extensión a ".wtf" en IIS, así que necesitaba cambiar la configuración a path = "*. wtf " – dudeNumber4

3

En Cassini todo pasa por su servidor de desarrollo, aunque la programación en el servidor generará una excepción si intenta usarlo en modo integrado.

En IIS7 funcionaría si ejecuta la aplicación en modo integrado.

En IIS6 tiene que asignar path = "*" a ASPNET_ISAPI.dll y luego tiene el mismo código entre comillas que el anterior en su web.config, o tiene que asignar la extensión en la ruta para su controlador.

Si tiene problemas para agregar aspnet isapi como * en IIS6, google para "IIS6 sin extensión" o algo similar para obtener tutoriales paso a paso.

+0

Creo que hice parecer que quería un controlador para una url sin extensión; Yo no. Solo quiero que mi controlador dispare. Si escribo "wtf" como extensión en el diálogo de asignaciones/Extensiones de aplicación de IIS, y trato de presionar "a.wtf", no se disparará. – dudeNumber4

+0

Sí, bueno, lo que insinué fue que el web.config y el asp.net isapi deben coincidir y tu solución actual no hizo eso. De todos modos, parece que la otra persona lo redactó mejor para ti. –

Cuestiones relacionadas