149 messaggi dal 14 settembre 2006
Ciao a tutti!

Vi spiego velocemente il mio scenario...
Sotto iis 7 ho aggiunto un sito web che a sua volta contiene altre sotto applicazioni.
Per esempio:
-MIO_SITO
--APP1
---APP3
--APP2

Il mio problema è che non riesco a dividere le sessioni tra il sito padre e le varie sotto applicazioni. Quando dal sito principale vado in una sotto applicazione, nella sotto applicazione mi trovo la sessione del sito padre... e questo per le logiche della mia soluzione non è corretto.

Ho provato anche ad impostare pool application diversi per ogni sotto applicazione, ma non funziona.

Grazie in anticipo per tutto il vostro aiuto!

Alessio.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao

io.alessio ha scritto:

Ho provato anche ad impostare pool application diversi per ogni sotto applicazione, ma non funziona.

mmh, è molto strano perché in questo caso le applicazioni correrebbero su processi distinti e non c'è possibilità che la sessione possa essere condivisa tra di loro. Forse non usi la modalità di default InProc, ma StateServer o SqlServer?

Ad ogni modo, prova a cambiare il nome del cookie per ogni applicazione. In ciascun web.config metti questo, differenziando il cookieName
<configuration>
    <system.web>
      <sessionState cookieName="cookieDiNomeApp" />
    </system.web>
</configuration>


ciao
Modificato da BrightSoul il 06 febbraio 2013 20.33 -

Enjoy learning and just keep making
149 messaggi dal 14 settembre 2006
Grazie per la risposta!

Comincio a risponderti dicendo che uso la modalità di default (InProc).

Ho provato ad impostato un CookieName differente per applicazione... ma continua a buttarmi fuori quando entro nella sotto applicazione.

Debuggando mi sono accorto che la applicazione padre perde la sessione quando in quella figlia arrivo all'istruzione:
HttpContext.Current.Session.RemoveAll()

Cosa che non dovrebbe capitare, visto che sono in poolapplication differenti e adesso anche CookieName.

Rimango un perplesso da questo comportamento!

Alessio
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
non so, c'è qualcosa che non mi torna. E' come se l'applicazione figlia non fosse affatto un'applicazione a sé stante, ma una semplice sottocartella dell'applicazione principale.

Potresti mettere questa riga di codice nell'applicazione figlia e controllare che output produce?
Response.Write(VirtualPathUtility.ToAbsolute("~/"));

Se l'applicazione figlia è stata correttamente configurata in IIS, dovrebbe restituirti un percorso tipo /app1/.

Se restitusce semplicemente /, ecco trovato il problema: l'applicazione principale e quella figlia sono in realtà la stessa applicazione.
In questo momento non mi vengono in mente altre ipotesi...

ciao

Enjoy learning and just keep making
149 messaggi dal 14 settembre 2006
Grazie dell'ottimo consiglio!
ho fatto le dovute verifiche e mi sono accorto che effettivamente qualcosa non va:
Il mio albero dell'applicazione è fatto così:
App1
--App2
----App4
--App3

il risultato che mi da VirtualPathUtility.ToAbsolute("~/") quando navigo tra le varie app sono i seguenti:
su App2 restituisce /App2/
su App3 restituisce /App3/
su App4 restituisce /App2/App3/

Forse è questo il problema... navigando su app4 non dovrebbe, in teoria, restituire /App4/?

Ma su iis ho verificato che App2, App3 e App4 sono configurate tutte come applicazioni... l'unica differenza è che App4 è una sotto applicazione di App2.

Sarà questo che crea problemi?
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

io.alessio ha scritto:

.. navigando su app4 non dovrebbe, in teoria, restituire /App4/?

dovrebbe restituirti lo stesso percorso che hai creato in IIS. Se l'hai inserita sotto App2 col nome App4, ecco che il percorso risulterà essere /App2/App4.


Mi spiace ma io non riesco a riprodurre il tuo problema. Nel mio SkyDrive ho pubblicato il pacchetto di un sito TestSessione che puoi reimportare in IIS, se hai il Web Deployment Tool installato.

Lì si vede che le sessioni delle 4 applicazioni sono perfettamente isolate e che invocare Session.RemoveAll() da una delle applicazioni non ha alcun effetto sulle altre.

Non so da cosa potrebbe dipendere, forse c'è qualcos'altro che interferisce e ti dà l'illusione che dipenda dal RemoveAll.

ciao
Modificato da BrightSoul il 10 febbraio 2013 14.25 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.