2010-05-06 11 views
10

Esto es simplemente otra pregunta de tipo "trabajando en un servidor de desarrollo, por qué no funciona en IIS".¿Por qué los manejadores de eventos solo pueden vincularse a eventos HttpApplication durante la inicialización de IHttpModule?

Creé un buen DAL usando NHibernate como described here. Al crear una ISession, conecto un manejador de eventos a HttpApplication.EndRequest para encargarme de limpiarlo.

Sin embargo, desplegué mi sitio a IIS y dice: manipuladores

evento sólo se pueden enlazar a HttpApplication eventos durante IHttpModule inicialización.

Entiendo completamente lo que el mensaje está diciendo, pero no puedo descifrar por qué.

Puedo suscribirme al evento Button en cualquier momento, ¿por qué no me puedo suscribir a un evento del HttpApplication?

Estaría muy agradecido si alguien pudiera arrojar algo de luz sobre esto.

Y también me pregunto, ¿por qué funciona con el servidor de desarrollo y no con IIS 7?

EDIT: Ahora que han pasado dos meses, todavía no he recibido ninguna respuesta útil. :(
¿Es este tema tan difícil?

Respuesta

3

Usted está tratando de utilizar el HttpApplication fuera de su línea de inicialización. Simplemente no hacerlo. Como dice el error, enlazar los eventos durante la inicialización IHttpModule.

+0

Eso me da mucho. La parte que me falta es por qué. :) – Venemo

+0

@downvoter: ¿esto está realmente mal? ¿Te importa explicar por qué está mal? –

+3

Hola. No está mal, pero he votado negativamente porque no es una respuesta a la pregunta: "¿Por qué?" –

0

Debido IIS7 tiene algunos cambios de la forma en que se lanza la aplicación HTTP (básicamente, el proceso de trabajo asociado y la aplicación HTTP del mismo).

tenga una mirada en http://n2cms.codeplex.com/Thread/View.aspx?ThreadId=38311.

Si ejecuta IIS 7 en el modo clásico o en modo integrado con el los siguientes elementos en web.config, que debería funcionar bien:

<configuration> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false"/> 
    </system.webServer> 
</configuration> 

(cortado con tijeras de http://code.google.com/p/n2cms/source/browse/trunk/src/wwwroot/Web.config)

+1

Ya tengo validateIntegratedModeConfiguration = "false" (MVC lo colocó por defecto), pero no está funcionando – Venemo

+1

Este parámetro de configuración solo afecta la validación de la configuración. Cambiarlo solo evita que se generen errores de configuración en caso de que la configuración obsoleta de IIS 6 los parámetros se encuentran en su configuración de sitio. No cambia nada en el comportamiento del tiempo de ejecución una vez que se valida la configuración. –

0

Si funciona en su entorno de desarrollo, no en su IIS, es probable que su son (eran?) usando el servidor de desarrollo Cassini. Este servidor está lejos de tener el mismo comportamiento que IIS.

Otra solución es usar IIS Express, que proporciona el mismo nivel de integración en Visual Studio (al menos a partir de 2010) que el antiguo servidor de desarrollo Cassini, mientras que se comporta mucho más como IIS. IIS Express tiene un instalador independiente disponible en el sitio web de Microsoft, y también está incluido en las versiones más recientes de Visual Studio.

Eso es por el "por qué" en su primera línea de pregunta.

En cuanto a por qué está prohibido enlazar eventos fuera de una inicialización de IHttpModule, no sé.

+0

Verá, ya obtuve la misma respuesta hace 4 años. – Venemo

+0

Bien, pero nada indicaba eso en esta página, o debería cambiar mi Por lo tanto, este primer "por qué" de su pregunta no tenía respuestas en esta página. –

+0

Aún no respondió el "por qué". – Venemo

Cuestiones relacionadas