3 messaggi dal 20 marzo 2012
Ciao a tutti,
sono nuovo di programmazione web e mi sto avvicinando a MVC3.

Devo realizzare un sito utilizzabile solo da persone censite (collaboratori). Il sito è semplice, devo gestire un db con pochissime tabelle, le funzionalità da realizzare per la gestione di queste tabelle non mi spaventano.
Poichè prevedo che un domani qualche amico mi possa chiedere (anzi uno me lo ha già chiesto) di poter usufruire di un sito del genere, vorrei partire con il piede giusto e non arrivare alla fine e accorgermi di dover riscrivere il tutto (o comunque copiare cartelle, file....)

L'idea mia è quella di registrare un dominio (es.: pippo.it) e creare dei sottodomini (io.pippo.it, amico1.pippo.it, amico2.pippo.it.....) Ognuno dovrà avere il suo db separato (questo è un dogma) per gestire i propri collaboratori.
Vorrei che il codice del sito stesse per tutti nello stesso punto in modo che se devo fare una modifica (a mio insindacabile giudizio :)) questa sia immediatamente disponibile per tutti senza dover copiare la modifica per ciascun sottodominio.
L'unica cosa che sarei disposto a modificare all'attivazione di un nuovo sottodominio è la homepage (maschera di login) magari con un logo e/o una scritta personalizzabile.

Il mio problema è questo: come faccio in MVC a parametrizzare la connessione al db?? ovvero come faccio a far capire che se arrivo da amico1.pippo.it deve puntare ad un db e se arrivo da amico2.pippo.it ad un'altro??

Grazie in anticipo

Ciao
Vito
420 messaggi dal 23 marzo 2010
Contributi
Io ho il tuo stesso problema, ci sto sbattendo la testa da giorni ma ancora non ho trovato una soluzione :/
10 messaggi dal 28 aprile 2006
Contributi
Premetto che se vuoi usare Entity Framework devo fare una precisazione in più, altrimenti può bastarti questo. Innanzitutto è semplicissimo:

1) Devi usare un'unica applicazione, un solo sito, ed aggiungere in binding tutti i sottodomini, oppure ancora meglio metti in binding *.pippo.it così devi solo aggiungere i recordi DNS senza riconfigurare IIS

2) Lato codice rilevi da quale dominio arriva l'utente leggendo Request.Url.Host, ti consiglio di farlo una sola volta magari nell'Initialize() di una classe base di tipo Controller da cui fai ereditare tutti gli altri controller, salvi il valore in una proprietà almeno protected e tutti gli altri controller si leggo il valore.

3) Una volta che hai il dominio di arrivo ti costruisci la stringa di connessione dinamincamente, hai due opzioni: o ti salvi tante stringhe di connessione diverse e poi "peschi" quella che ti serve ConfigurationManager.ConnectionStrings[Dominio + "ConnectionString"], oppure costruisci la stringa stessa.

L'unica cosa "malsana" del tuo approccio è quello di avere N-database per N-utenti, questo sì che ti complicherà l'esistenza, oltre al fatto che non vedo ragione sensata per doverlo fare.
Modificato da fabrizio.iezzoni il 21 novembre 2012 10.01 -
420 messaggi dal 23 marzo 2010
Contributi
Grazie fabrizio! Nel mio scenario uso EF Code First, dovrei sapere altro?
3 messaggi dal 20 marzo 2012
Ciao e Grazie.

Uso EF adesso faccio due prove e nel caso tornerò a chiedere lumi.

grazie ancora

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.