5

Mi sono imbattuto in un problema in cui avevo un Html.DropDownList nella mia vista che avrebbe postback il valore selezionato la prima volta che ho inviato il modulo, ma ogni post successivo avrebbe solo postato i dati dal postback iniziale. Così ho aggiunto lo stile di vita = "transitorio" all'elemento componente in cui avevo configurato il mio controller per windsor del castello, che risolveva il problema, ma ovviamente i postbacks richiedevano più tempo da quando un nuovo controller veniva istanziato per richiesta. Viste le informazioni di cui sopra, quali informazioni, suggerimenti o soluzioni potrebbero aiutare a determinare la mia domanda iniziale sullo stile di vita del controller? Grazie per tutto l'aiuto e il supporto!Lo stile di vita del controller deve sempre essere transitorio nella configurazione di Windsor per ASP.NET MVC?

risposta

6

I controller MVC sono transitori. Pensandoci, questo ha senso per alcune ragioni. Innanzitutto, se una singola istanza viene utilizzata per soddisfare più richieste e se più richieste si verificano nello stesso momento con lo stesso controller, si verificheranno alcune condizioni di gara abbastanza bizzarre. Secondo, l'HTTP è per sua stessa natura priva di stato e le richieste esistono indipendentemente l'una dall'altra. Ciò si riflette nello stile di vita transitorio dei controllori.

+0

LOL. Probabilmente stavo pensando a quello senza pensarlo affatto. Grazie per l'intuizione. Probabilmente ed evidente SÌ alla mia domanda, ma stavo pensando troppo dentro la scatola del windsor per realizzare la soluzione. Grazie mille! – mkelley33

+0

Potrebbe essere utile sottolineare che senza definire uno stile di vita, verrà utilizzato il valore predefinito di "Singleton". Nessuna meraviglia che potrebbe causare problemi. – Ted

5

Transitorio, sì, ma per ragioni di interesse, perché non PerWebRequest anziché Transient? Ho visto un paio di blog che usano lo stile di vita PerWebRequest e non riesco a pensare a una ragione per cui no. Qualche risposta?

4

Sono d'accordo con Dion. Sbarcati qui cercando una soluzione a questa stessa domanda. Sembra che PerWebRequest sia più appropriato.

A seconda del modo in cui si integra il contenitore in MVC e WebApi, è possibile che non venga richiesto a Windsor di rilasciare dipendenze quando il controller non viene più utilizzato.

Se si imposta su PerWebRequest, che verrà rilasciare automaticamente il controller, e tutte le sue dipendenze quando la richiesta termina

Problemi correlati