2012-02-11 16 views
5

Implementé un sitio web en AppHarbor que usa una base de datos MS SQL. AppHarbor me proporciona una cadena de conexión que ingresé en settings.txt y parece funcionar bien PERO AppHarbor sugiere utilizar la variable SQLSERVER_CONNECTION_STRING en su lugar.Sobrescribir cadenas de conexión (desde settings.txt) en Orchard CMS

Esto se debe a que la cadena de conexión puede cambiar sin previo aviso, por lo que la única forma segura es utilizar la variable mencionada.

Acceso a las variables de configuración a continuación se debe hacer mediante programación, ya que los valores pueden ser actualizados por el add-on proveedor de sin previo aviso.

¿Hay una manera de anular la configuración de DataConnectionStringsettings.txt y configurar la aplicación para utilizar la variable SQLSERVER_CONNECTION_STRING en su lugar? Asumo que AppHarbor de alguna manera establece esas variables como appSettings.

P.S. Esta es mi primera aplicación con Orchard, no soy competente con este CMS.

Respuesta

6

La cadena de conexión se establece en la clase ShellSettingsManager. No estoy seguro de que puede sustituir fácilmente a esta dependencia de un módulo, pero ciertamente se podría simplemente cambiar la línea de código que establece la cadena de conexiones ...

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

ShellSettingsManager es una implementación de IShellSettingsManager por lo que tiene algunas flexibilidad allí si quiere simplemente implementar la suya también.

+0

Para ser honesto, yo estaba esperando una solución que no incluya a jugar con el código fuente, pero finalmente he seguido su sugerencia 'shellSettings.DataConnectionString = ConfigurationManager.AppSettings [ "SQLSERVER_CONNECTION_STRING"] ?? valor; ' – lalibi

+0

ya, lo siento, no creo que haya una opción sin código. –

+1

Sé que esto está un poco anticuado y la fuente del marco Orchard ha cambiado, pero en la versión 1.6 parece que esto podría lograrse sin cambiar la fuente central de Orchard. Uno podría crear una implementación personalizada de IShellSettingsManager. El IoC para ShellSettingsManager se registra usando Autofac, por lo que debería ser posible crear un nuevo ContainerBuilder, luego llamar a RegisterType o RegisterInstance, y finalmente llamar a Update passing en el núcleo del contenedor originalmente devuelto por OrchardStarter.CreateHostContainter(). Estoy trabajando en un enfoque similar ahora, buscando un buen punto de inyección. – defines

0

La implementación de huerto a appharbor puede no valer la pena el esfuerzo. Appharbor borra toda la aplicación cuando se realiza una implementación para que los medios cargados también se eliminen. Puede solucionar esto alojando la carpeta de medios en otro lugar, como amazon s3.

Pero tampoco tiene acceso FTP a los archivos de registro ni a ninguna otra cosa. (al menos no la última vez que miré).

Además, no puede aprovechar la implementación web.

Puede hacer que funcione pero la arquitectura de huertos crea mucha fricción con el modelo de implementación de appharbor.

No me malinterprete. Amo appharbor. Pero el huerto es clavija cuadrada. Obtuve la vista trabajando en el appharbor, pero 4 meses después descubrí que tenía miedo de actualizar porque hay demasiadas configuraciones no predeterminadas. Finalmente, arrojó una toalla y pagó $ 8 por mes en arvixe. Mucho menos fricción ahora.

+0

Me gusta usar el plan gratuito AppHarbor para demostraciones (para que los clientes puedan consultar su sitio mientras están en desarrollo), y para ese propósito (y no solo eso por supuesto) AppHarbor es excelente. Posiblemente trasladaré el sitio a otro lugar cuando esté listo, pero el desarrollo llevará algo de tiempo y no quiero decirle al cliente que comience a pagar mientras el proyecto está en desarrollo. Gracias por tu información. – lalibi

+0

Si utiliza el proveedor de almacenamiento S3, los archivos se convierten en un problema menor. Hemos escrito una guía aquí: http://support.appharbor.com/kb/tips-and-tricks/running-orchard-on-appharbor – friism

2

Acabo de publicar mi "Configuraciones del shell de configuración" del módulo (Fineout.ConfigShellSettings) en la Galería Orchard. Este módulo finalmente proporciona una forma sencilla de administrar la configuración del shell del sitio de Orchard (inquilino) a través de la administración de la configuración.

Download the Configuration Shell Settings module from the Orchard Gallery!

he copiado la descripción del paquete módulo (versión 1.0.1) a continuación:

Permite la configuración del shell Orchard para los inquilinos que se especificarán a través de parámetros de la aplicación de configuración, es decir, "Web .config "en lugar de" Settings.txt ".Esto permite el control de las configuraciones del sitio (inquilino) a través de la administración de configuración de compilación, simplificando considerablemente el proceso de compilación e implementación para la mayoría de los entornos e infraestructuras.

Al habilitar la función, las configuraciones de shell existentes para todos los inquilinos se copiarán de los respectivos archivos "Settings.txt" en AppSettings definidos en "Orchard.Web/Web.config". Del mismo modo, siempre que la característica esté deshabilitada, las AppSettings existentes definidas para todos los inquilinos se copiarán nuevamente a los respectivos archivos "Settings.txt". Esto permite que la característica se administre sin necesidad de manipulación manual de archivos o cambios de código.

Como esta es la versión inicial del módulo, espero que haya mucho margen de mejora y errores ocasionales; Me encantaría cualquier comentario o idea que alguien tenga. Espero que esta contribución sea útil y le ahorre tiempo a la comunidad.

Cuestiones relacionadas