13 messaggi dal 04 gennaio 2012
Salve a tutti,
ho un piccolo problema come da titolo, mi spiego meglio...
Ho una web application che gestisce più siti identici, ma con contenuti diversi. Sostanzialmente controllo il dominio da cui è partita la richiesta e tramite un interrogazione al db assegno un idCompany alla sessione che poi lo userò ogni volta che devo prelevare i contenuti di ogni pagina. Tutto questo mi funziona perfettamente.
Tuttavia ho la necessità di avere un parametro che forzi un determinato idCompany indipendentemente dal dominio di provenienza della richiesta.

Ho scritto il seguente codice:
  void Session_Start(object sender, EventArgs e)
  {

      ...

      // Lasciare prima della chiamata a GetCurrentIdCompany(...)
      object oid = Request.Params["forceIdCompany"];
      Session[Costanti.SessionVariables.forceIdCompany] = oid;

      byte idCompany = myApplication.GetCurrentIdCompany(Request, Session);

      ...

}


Compilando in Debug funziona alla perfezione, ma in Release non va proprio...

In pratica prendo il parametro forceIdCompany e lo butto in una variabile di sessione così com'è, il metodo statico GetCurrentIdCompany controlla il valore di questa variabile di sessione, se è valido lo considera come idCompany, altrimenti legge l'id corrispondente al dominio di provenienza direttamente dal db.
Qualcuno può gentilmente aiutarmi?
Grazie anticipatamente.
Modificato da wally1975 il 20 luglio 2012 11.41 -
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao wally, benvenuto nel forum!

wally1975 ha scritto:

Compilando in Debug funziona alla perfezione, ma in Release non va proprio...

Indipendentemente da cosa fa la tua applicazione, il comportamento dovrebbe essere il medesimo sia che la compili in modalità debug che in modalità release. La differenza è solo che, nel secondo caso, il codice viene ottimizzato e non vengono inclusi dei simboli utili al debugger.

A meno che tu non abbia usato direttive #if nel codice, l'unico elemento che può differenziare il comportamento dell'applicazione in maniera sostanziale sono le trasformazioni del web.config. Con Visual Studio 2010 hai l'opportunità di creare un web.Debug.config e un web.Release.Config (e altri). Controlla se tra i due ci sono differenze importanti che potrebbero compromettere il funzionamento dell'applicazione.

Oppure ho capito male e con "Release" intendi dire "sul server di produzione" (?) In questo caso l'applicazione gira in un ambiente diverso dal tuo PC di sviluppo e ciò può essere la causa del problema. Ad esempio, alcune aziende hanno una web farm in produzione, ovvero più server web che cooperano per offrire prestazioni migliori. Questo setup causa problemi con le variabili di sessione, ma si può anche risolvere. E' il tuo caso?

wally1975 ha scritto:

in Release non va proprio...

Comunque, spiega esattamente cos'è che non funziona. Le variabili di Sessione, per esempio, funzionano normalmente? Cioè, se imposti una variabile in una pagina aspx, poi riesci a rileggerne il valore da un'altra pagina?

ciao
Modificato da BrightSoul il 23 luglio 2012 22.35 -

Enjoy learning and just keep making
13 messaggi dal 04 gennaio 2012
BrightSoul ha scritto:
ciao wally, benvenuto nel forum!

wally1975 ha scritto:

Compilando in Debug funziona alla perfezione, ma in Release non va proprio...

Indipendentemente da cosa fa la tua applicazione, il comportamento dovrebbe essere il medesimo sia che la compili in modalità debug che in modalità release. La differenza è solo che, nel secondo caso, il codice viene ottimizzato e non vengono inclusi dei simboli utili al debugger.

A meno che tu non abbia usato direttive #if nel codice, l'unico elemento che può differenziare il comportamento dell'applicazione in maniera sostanziale sono le trasformazioni del web.config. Con Visual Studio 2010 hai l'opportunità di creare un web.Debug.config e un web.Release.Config (e altri). Controlla se tra i due ci sono differenze importanti che potrebbero compromettere il funzionamento dell'applicazione.

Oppure ho capito male e con "Release" intendi dire "sul server di produzione" (?) In questo caso l'applicazione gira in un ambiente diverso dal tuo PC di sviluppo e ciò può essere la causa del problema. Ad esempio, alcune aziende hanno una web farm in produzione, ovvero più server web che cooperano per offrire prestazioni migliori. Questo setup causa problemi con le variabili di sessione, ma si può anche risolvere. E' il tuo caso?

wally1975 ha scritto:

in Release non va proprio...

Comunque, spiega esattamente cos'è che non funziona. Le variabili di Sessione, per esempio, funzionano normalmente? Cioè, se imposti una variabile in una pagina aspx, poi riesci a rileggerne il valore da un'altra pagina?

ciao
Modificato da BrightSoul il 23 luglio 2012 22.35 -



Ciao BrightSoul e grazie per la risposta.
Le direttive #if le uso solo nella gestione degli errori per la propagazione delle eccezioni, e comunque non in quelle funzioni interessate da questo problema. E' la prima cosa che ho controllato...

Dicendo che il problema si manifesta compilando in Release intendo proprio in Release, quindi anche sulla macchina di sviluppo. La questione è molto strana perchè se nell'url passo altri parametri questi vengono accettati, solo uno viene completamente ignorato.
Il server è una singola macchina, non abbiamo una server farm, unica differenza è la versione del sistema operativo Win2003/IIS6.0 invece di Win7/IIS7.5 che ho sulla macchina di sviluppo.

Per quanto riguarda le variabili di sessione, a questo punto, credo che il problema sia proprio quello visto che il parametro che non funziona è l'unico ad essere conservato in una variabile di sessione. Questa settimana sono in ferie quindi non riesco a fare altre prove, comunque ti aggiornerò al mio rientro.

Ciao e grazie,
Wal
13 messaggi dal 04 gennaio 2012
Mi vergogno come un cammello, ma in realtà funzionava già tutto correttamente era solo un mio errore nell'utilizzo del sito...
Debug e Release non c'entravano nulla...


Vi scrivo brevemente qual'era il problema solo per curiosità perché in realtà è qualcosa di molto specifico del mio progetto che quindi non ritornerà utile a nessuno.

Inavvertitamente tutte le prove che avevo fatto dopo la pubblicazione, e i successivi test sulla mia macchina di sviluppo, passando il parametro forceIdCompany evidentemente le avevo fatte nella stessa finestra in cui avevo precedentemente visualizzato il sito in originale che quindi prendeva automaticamente il suo parametro di default.
Quindi avviando dalla stessa finestra il nuovo url con il parametro forceIdCompany, il nuovo id veniva sì memorizzato nella variabile di sessione ma non veniva utilizzato perché la session_start non veniva richiamata in quanto esisteva già una sessione attiva per la precedente visualizzazione.
Mi sembra strano di non essermene mai accorto, ma è l'unica soluzione!


Vabbè... mi vergogno terribilmente!!! Chiedo venia...

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.