Domanda

Sto riscontrando il seguente "problema". Ho creato un file di contesto dell'applicazione per spring.net. La configurazione è simile alla seguente:

<spring>
    <context>
        <resource uri="config://spring/objects"/>
    </context>
    <objects configSource="SpringObjects.config" />
</spring>

Mi è stato detto che se si modifica qualcosa nel contesto dell'applicazione non è necessario ricompilare l'applicazione per vedere le modifiche.

Comunque, se cambio qualcosa nel file di configurazione. Non sono state rilevate modifiche. Sono ancora visibili i dati originali.

Chiamo il contesto dell'applicazione in questo modo:

IApplicationContext ctx = ContextRegistry.GetContext();
    ManagementConfigurator configurator = (ManagementConfigurator)ctx.GetObject("ManagementConfigurator");

A volte ci vogliono alcuni minuti prima che le modifiche siano visibili (anche dopo aver ricompilato l'app).

EDIT: Ho appena scoperto che devi riavviare il pool di applicazioni. Quindi riformulerò la mia domanda: " Puoi ricaricare il contesto dell'applicazione all'interno della tua applicazione? & Quot; Senza dover riavviare il pool di applicazioni.

È stato utile?

Soluzione

Non è necessario riavviare il pool di applicazioni, è necessario riciclare l'AppDomain relativo al codice di esecuzione. Non so se questa è un'opzione per te, ma se metti gli oggetti spring all'interno del file web.config invece che in un file separato, e cambi il file web.config (ad esempio cambiando la configurazione spring all'interno ), l'AppDomain associato verrà riciclato, il che dovrebbe anche significare che l'applicazione verrà riconfigurata di nuovo. Potresti anche semplicemente cambiare il tuo file SpringObjects.config e 'toccare' il web.config dopo quello. (Non sono sicuro se inserire SpringObjects.config nella directory bin sia una buona idea, ma una modifica alla directory bin provoca anche un riciclo di AppDomain)

È possibile utilizzare i metodi ContextRegistry (Clear, quindi RegisterContext) a livello di codice per ricaricare ApplicationContext, sebbene non lo consiglierei.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top