9 messaggi dal 12 giugno 2007
Salve, sono Silvia Terzi e programmo da pochissimo in ASP . NET. Ho un problema molto contingente e, almeno spero, banale. Nel mio sito web ho costruito una pagina di loin in cui do la possibilità all'utente di inserire, oltre all'utente e alla password anche il db al quale vuole accedere, visto che ho 4 db (oracle) strutturalmente uguali contenenti dati diversi. All'interno del sito poi uso vari oggetti, tipo gridview e combobox, collegati ad db tramite SqlDatrasource. Sono riusciti a fare questa cosa e sembrava funzionare, salvo che mi sono accorta, che la modifica invece di essere a livello di sessione utente, sembra funzionare a livello globale. Ovvero quando un utente cambia stringa entrando nel sito, la cambia anche agli altri utenti collegati al sito da altri computer. Cos'ho sbagliato?? Io semplicemente cambio la connectionstring dei vari sqldatasource, ma cosa manca?? Grazie mille a chiunque vorrà aiutarmi.
Saluti, Silvia Terzi
20 messaggi dal 25 aprile 2009
"Cos'ho sbagliato??"

Tutto.
Scherzi a parte, io non sono un esperto anzi sono alle prime armi come te per cui prendi il tutto con le pinze. Se cambi a runtime la stringa di connessione chiaramente la modifica ha effetto sul comportamento lato server della pagina e chiunque da quel momento in poi richiama la stessa lei si comporterà nel modo ridefinito fino a quando un terzo client si logga e ricambia nuovamente la stringa. L'effetto sarebbe disastroso perchè gente connessa a un db di punto in bianco al primo postback si ritroverebbe dei dati di un altro db magari senza accorgersene.
La soluzione è quella di far si scegliere all'utente a quale db collegarsi e di reindirizzarlo a pagine dell'applicazione che gestiscono i 4 db in modo autonomo, la tua applicazione asp.net deve essere in pratica suddivisa in 4 parti separate che facciano sostanzialmente la stessa cosa ma su 4 db differenti.
Una applicazione asp.net non è una app windows form. Purtroppo asp.net ci ha abituati male e spesso si incorre in errori progettuali come questo.

Capito questo concetto, la sfida è fare il tutto in ottica OOP... ma questa è un altra storia.
Spero di non aver detto cazzate e di esserti stato utile.
Michele
9 messaggi dal 12 giugno 2007
Si, all'inizio avevo pensato anch'io di fare così, ma poi mi hanno suggerito di usare le variabili di tipo Session, che sembra funzionino!! Adesso provo poi ti dico!! Comunque grazie mille,
Silvia
45 messaggi dal 16 ottobre 2007
Ciao Silvia,

invece di usare un oggetto SqlDataSource ti consiglio di utilizzare un oggetto Linq To SQL (per esempio) per crearti la connessione e fare query al DB.

Linq to SQL ti da il vantaggio di essere istanziato per ogni richiesta utente, e ad ogni istanziazione del Context dell'oggetto Linq to SQL creato potrai specificare la connection string che l'utente deve usare per connettersi al DB che l'utente ha selezionato.

ciao,

Luca

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.