5

Avevo un'applicazione che si collegava a un singolo database.Asp.net ha annullato le impostazioni dell'appartenenza al runtime (asp.net mvc)

L'app ora deve collegarsi a più database. Quello che vogliamo fare è, usando la stessa applicazione/dominio/nomehost/dir virtuale dare all'utente l'opzione nella schermata di login per selezionare la "App/Database" a cui vogliono connettersi.

Ogni database ha le tabelle App/dati/procs/ecc. Nonché i componenti di appartenenza/ruoli di aspnet.

Quando l'utente immette il nome utente/password e seleziona (seleziona l'elenco) l'applicazione, voglio convalidare l'utente con il database delle applicazioni selezionato.

Attualmente la stringa di connessione al database per i servizi di appartenenza viene salvata in web.config. Esiste un modo per sovrascriverlo al momento del login? Inoltre, ho bisogno anche della funzione "ricordami di me" per funzionare correttamente. Come funziona quando l'utente torna all'app in 5 ore ... Questo processo dovrebbe essere in grado di identificare l'utente e l'applicazione e accedere correttamente.

risposta

5

L'unico modo possibile è quello di cambiare la stringa conn attraverso la riflessione:

// Set private property of Membership provider.FieldInfo connectionStringField 
= GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic); 
     connectionStringField.SetValue(this, connectionString); 

trovate qui: http://forums.asp.net/p/997608/2209437.aspx

Perché non solo implementare il proprio MembershipProvider? Molto facile da fare e quindi hai il pieno controllo di cosa sta succedendo. Sono certo che troverai un altro scenario personalizzato con il quale il provider predefinito non funziona bene.

AFAIK la funzione remember me dovrebbe funzionare esattamente come la descrizione purché l'utente non cancelli i cookie.