Raccogliamo alcuni suggerimenti per valutare l'uso appropriato di global.asax.Quali sono i pro e i contro dell'uso di Global.asax?
risposta
È semplice da utilizzare se il codice di inizializzazione della sessione e dell'applicazione è molto piccolo e specifico dell'applicazione. L'utilizzo di un HttpModule è più utile se si desidera riutilizzare il codice, ad esempio l'impostazione di regole per la riscrittura degli URL, i reindirizzamenti o l'autenticazione. Un HttpModule può coprire tutto ciò che può fare un file Global.asax. Possono anche essere rimossi e aggiunti facilmente usando il tuo .config.
L'ho usato prima per rilevare errori a livello di applicazione e per fare qualcosa quando scade la sessione di un utente.
Tendo anche a usarlo molto per fornire proprietà statiche che leggono valori da web.config.
Penso che vada bene per cose del genere, anche se non metterei molto più di quello lì dentro.
Global.asax può ereditare dalla propria classe che eredita l'httpapplication. Ti dà più opzioni e mette la maggior parte del codice che potresti avere in una biblioteca di classi.
MODIFICA: la classe HttpApplication (genitore globale.asax) in una libreria di classi separata può anche promuovere la riusabilità. Anche se sono d'accordo sul fatto che l'uso di HttpModules è più adatto per molte attività, ma questo ha ancora molti usi, per uno, un codice più pulito.
Non ho mai utilizzato Global.asax. L'ho usato sempre nel classico ASP, ma questo era dovuto principalmente a determinate configurazioni come le stringhe di connessione al database e così via. La configurazione in .net rende molte di queste cose molto più semplici.
Ma se si desidera implementare eventi a livello di applicazione e di sessione, è qui che è necessario andare.
È un bel posto per prendere l'avvio della sessione e persino richiedere l'avvio. Altri hanno menzionato l'aspetto della gestione degli errori, sebbene si faccia attenzione alle eccezioni generate da thread non-asp.net (ad esempio threadpool o thread personalizzati) poiché ignoreranno il gestore global.asax. Personalmente ne ho sempre uno, lo considero semplicemente parte dell'impianto idraulico.
- Inizializzazione di ASP.NET MVC. :)
- Autenticazione utente personalizzata.
- Iniezione delle dipendenze, come l'estensione dell'HttpApplication Ninject.
Usavo Global.asax per cose come la gestione degli errori, ecc. Tuttavia, da allora ho utilizzato HttpModules per rimpiazzarlo poiché posso copiarlo da un progetto a un altro senza modificare global.asax.
È un drink rigido, fai solo attenzione a non bere troppo e starai bene.
Lo utilizzo per la gestione globale degli errori e la configurazione di percorsi in mvc. Tuttavia, non si vuole scrivere codice globale page_init.
Se vi attenete agli eventi a livello di applicazione e fate in modo che la maggior parte della logica viva effettivamente nelle classi appena richiamate durante questi eventi, non avrete alcun problema a utilizzare i costrutti globali.
Con l'utilizzo di Global.asax rispetto a un HttpModule: sarete tentati di scrivere codice che è difficile da riutilizzare perché sarà troppo legato a quella particolare applicazione.
L'evento Session_Start
in Global.asax è un buon posto per inizializzare le variabili di sessione.
Personalmente, non penso che sia necessario un tag global.asax ... –
Abbastanza corretto, rimuoverò anche quel commento – Larsenal