2010-05-06 19 views
10

Questa è solo un'altra domanda di tipo "funziona in dev server, perché non funziona in IIS".Perché i gestori eventi possono essere associati solo agli eventi HttpApplication durante l'inizializzazione IHttpModule?

Ho creato un bel DAL utilizzando NHibernate come described here. Durante la creazione di un'ISession, collego un gestore di eventi a HttpApplication.EndRequest per occuparsi della sua pulizia.

Tuttavia, ho schierato il mio sito per IIS e dice: gestori

eventi possono essere usate solo HttpApplication eventi durante l'inizializzazione IHttpModule.

Capisco perfettamente cosa sta dicendo il messaggio, ma non posso capire perché.

Posso iscrivermi a un evento di Button in qualsiasi momento, perché non riesco ad iscrivermi a un evento dello HttpApplication?

Sarei molto grato se qualcuno potesse far luce su questo.

E mi chiedo anche, perché funziona con il server di sviluppo e non con IIS 7?

MODIFICA: Ora che sono passati due mesi, non ho ancora ricevuto risposte utili. :(
È questo il problema davvero così difficile?

risposta

3

Stai cercando di utilizzare il HttpApplication di fuori della sua pipeline di inizializzazione. Basta non farlo. Come dice l'errore, legare gli eventi durante l'inizializzazione IHttpModule.

+0

Quello che ottengo. La parte che mi manca è il perché. :) – Venemo

+0

@downvoter: è veramente sbagliato? Ti va di spiegare perché è sbagliato? –

+3

Ciao. Non è sbagliato, ma ho downvoted perché non è una risposta alla domanda: "Perché?" –

0

Perché IIS7 ha alcuni cambiamenti di come l'applicazione HTTP è lanciato (in pratica, il processo di lavoro associato e l'applicazione HTTP di esso).

Dai un'occhiata alla http://n2cms.codeplex.com/Thread/View.aspx?ThreadId=38311.

Se si esegue IIS7 in modalità classica o in modalità integrata con il seguenti elementi nel web.config, dovrebbe funzionare bene:

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

(ritagliata da http://code.google.com/p/n2cms/source/browse/trunk/src/wwwroot/Web.config)

+1

Ho già validateIntegratedModeConfiguration = "false" (MVC lo inserisce automaticamente per impostazione predefinita), ma non funziona. – Venemo

+1

Questo parametro di configurazione influisce solo sulla convalida della configurazione. La modifica impedisce solo gli errori di configurazione in caso di configurazione obsoleta di IIS 6 i parametri si trovano nel tuo sito conf. Non cambia nulla sul comportamento di runtime dopo che la configurazione è stata convalidata –

0

Se funziona nell'ambiente di sviluppo, non sul vostro IIS, è probabile che il vostro sono (erano?) usando il server di sviluppo di Cassini. Questo server è lontano dall'avere lo stesso comportamento di IIS.

Un'altra soluzione è utilizzare IIS Express, che fornisce lo stesso livello di integrazione in Visual Studio (almeno a partire dal 2010) rispetto al vecchio server di sviluppo Cassini, mentre si comporta in modo molto più simile a IIS. IIS Express ha un programma di installazione standalone disponibile sul sito Web Microsoft ed è incluso anche nelle versioni più recenti di Visual Studio.

Questo è per il "perché" sulla prima riga di domanda.

Per quanto riguarda il motivo per cui è vietato associare eventi al di fuori dell'inizializzazione IHttpModule, non lo so.

+0

Vedete, ho già avuto la stessa risposta 4 anni fa – Venemo

+0

OK, ma nulla stava affermando che in questa pagina, o dovrei cambiare il mio occhiali. Quindi questo primo "perché" della tua domanda non stava avendo risposte su questa pagina. –

+0

Ancora non hai risposto al "perché". – Venemo

Problemi correlati