2012-02-11 13 views
5

Ho implementato un sito Web in AppHarbor che utilizza un database MS SQL. AppHarbor mi fornisce una stringa di connessione che ho inserito in settings.txt e sembra funzionare bene, ma AppHarbor suggerisce di utilizzare la variabile SQLSERVER_CONNECTION_STRING.Sovrascrivere stringa di connessione (da settings.txt) in Orchard CMS

Questo perché la stringa di connessione può cambiare senza preavviso, quindi l'unico modo sicuro è usare la variabile menzionata.

Accesso alle variabili di configurazione qui sotto dovrebbe essere fatto programatically, i valori possono essere aggiornati per l'add-on fornitore senza preavviso.

C'è un modo per sostituire l'impostazione DataConnectionString da settings.txt e impostare l'applicazione per utilizzare la variabile SQLSERVER_CONNECTION_STRING invece? Presumo che AppHarbor in qualche modo imposti tali variabili come appSettings.

P.S. Questa è la mia prima applicazione con Orchard, non sono abile con questo CMS.

risposta

6

La stringa di connessione è impostata nella classe ShellSettingsManager. Io non sono sicuro che si può facilmente sostituire questa dipendenza da un modulo, ma si potrebbe certamente solo modificare la riga di codice che imposta la stringa di connessione ...

shellSettings.DataConnectionString = value; //use your config value instead 

ShellSettingsManager è un'implementazione di IShellSettingsManager in modo da avere un po ' flessibilità lì se vuoi implementare anche la tua.

+0

Per essere onesti, speravo in una soluzione che non includeva scherzi con il codice sorgente, ma alla fine ho seguito il tuo suggerimento 'shellSettings.DataConnectionString = ConfigurationManager.AppSettings [ "SQLSERVER_CONNECTION_STRING"] ?? valore; ' – lalibi

+0

ya, mi dispiace, non penso che ci sia un'opzione non di codice. –

+1

So che questo è un po 'datato e la fonte del framework di Orchard è cambiata, ma nella versione 1.6 sembra che questo potrebbe essere ottenuto senza cambiare la fonte principale di Orchard. Si potrebbe creare un'implementazione personalizzata di IShellSettingsManager. IoC per ShellSettingsManager è registrato utilizzando Autofac, quindi dovrebbe essere possibile creare un nuovo ContainerBuilder, quindi chiamare RegisterType o RegisterInstance e infine chiamare Update passando nel core Container originariamente restituito da OrchardStarter.CreateHostContainter(). Sto lavorando su un approccio simile ora, alla ricerca di un buon punto di iniezione. – defines

0

L'utilizzo del frutteto nell'appharbor potrebbe non valerne la pena. Appharbor spazza via l'intera app quando esegue una distribuzione, così anche i supporti caricati vengono spazzati via. È possibile aggirare questo ospitando la cartella multimediale da qualche altra parte, come Amazon s3.

Ma non si dispone di accesso FTP per registrare file o altro. (almeno non l'ultima volta che ho guardato).

Inoltre, non è possibile sfruttare la distribuzione sul Web.

È possibile farlo funzionare ma l'architettura dei frutteti crea molto attrito con il modello di implementazione di appharbor.

Non fraintendetemi. Amo appharbor. Ma il frutteto è un piolo quadrato. Ho iniziato a lavorare su appharbor, ma dopo 4 mesi ho scoperto di aver paura di aggiornare perché troppe impostazioni non predefinite. Alla fine, ha gettato un asciugamano e pagato $ 8 al mese a Arvixe. Molto meno attrito ora.

+0

Mi piace usare il piano gratuito AppHarbor per le dimostrazioni (in modo che i clienti possano controllare il loro sito mentre sono in fase di sviluppo), e per questo scopo (e non solo quello ovviamente) AppHarbor è eccellente. Forse trasferirò il sito altrove quando sarà finito, ma lo sviluppo richiederà del tempo e non voglio dire al cliente di iniziare a pagare mentre il progetto è in fase di sviluppo. Grazie per le tue informazioni però. – lalibi

+0

Se si utilizza il provider di archiviazione S3, i file diventano meno di un problema. Abbiamo scritto una guida qui: http://support.appharbor.com/kb/tips-and-tricks/running-orchard-on-appharbor – friism

2

Ho appena pubblicato il mio "Configuration Shell Settings" module (Fineout.ConfigShellSettings) alla Orchard Gallery. Questo modulo fornisce infine un modo indolore per gestire le impostazioni della shell del sito Orchard (tenant) tramite la gestione della configurazione.

Download the Configuration Shell Settings module from the Orchard Gallery!

Ho copiato la descrizione del pacchetto modulo (versione 1.0.1) di seguito:

Consente impostazioni della shell Orchard per gli inquilini da specificare tramite le impostazioni delle applicazioni di configurazione, vale a dire "Web .config "invece di" Settings.txt ".Ciò consente il controllo delle impostazioni del sito (inquilino) tramite la gestione della configurazione di build, semplificando notevolmente il processo di generazione e distribuzione per la maggior parte degli ambienti e delle infrastrutture.

Attivando la funzione, le impostazioni della shell esistenti per tutti i tenant verranno copiate dai rispettivi file "Settings.txt" in AppSettings definiti in "Orchard.Web/Web.config". Allo stesso modo, ogni volta che la funzione è disabilitata, AppSettings esistenti definiti per tutti i tenant verranno copiati nei rispettivi file "Settings.txt". Ciò consente di gestire la funzionalità senza la necessità di manipolazioni manuali o modifiche al codice.

Poiché questa è la versione iniziale del modulo, mi aspetto che ci sarà molto spazio per miglioramenti e bug occasionali; Mi piacerebbe qualsiasi feedback o idee che qualcuno ha. Spero che questo contributo si riveli utile e rapido per la comunità.