2010-03-17 17 views
10

Mi chiedo, c'è una nuova istanza di controller per ogni richiesta? Come funziona davvero? Ho letto qualcosa del genere dopo che un routing di richiesta in entrata seleziona il controller corretto .. e immagino che crei una nuova istanza di quello e che il controller gestisca ulteriormente la richiesta. Se è così, per quanto riguarda le azioni di reindirizzamento ad altre azioni? Ciò avvia anche un nuovo processo di routing e una nuova istanza di controller?Esiste una nuova istanza controller per ogni richiesta?

Grazie in anticipo.

risposta

15

Sì, una nuova istanza in istanza per ogni richiesta e distrutta al termine della richiesta.

Ogni route è gestita da un'istanza di MvcRouteHandler. Il gestore predefinito chiama in ControllerFactory, che, in base ai token URL, crea un'istanza di un nuovo controller tramite una chiamata di riflessione su Activator.CreateInstance().

+0

Infatti, a partire da MVC 2, il framework proverà a rilevare se è stato erroneamente impostato il contenitore DI per restituire i controllori con durate non transitorie. In tal caso, verrà generata un'eccezione che richiede di riconfigurare il contenitore DI. – Levi

Problemi correlati