17

Tengo una aplicación actualmente en Azure y cada vez que la insertamos en el segmento de etapas, no podemos verificar realmente ya que la cadena de conexión apunta a la base de datos prod.Establezca ConnectionString de la aplicación en la configuración del servicio en lugar de web.config en Azure

Alguien me ha mencionado que debería poder establecer la cadena de conexión en el archivo ServiceConfiguration.cscfg en su lugar (o con) el archivo web.config. De esta forma, puede cambiar la cadena de conexión en Azure Portal en lugar de volver a publicar una aplicación para quién.

¿Alguien sabe cómo hacer esto?

Respuesta

26

En el archivo ServiceConfiguration.cscfg añadir:

<ServiceConfiguration ... /> 
    <Role ... /> 
    <ConfigurationSettings> 
     <Setting name="DatabaseConnectionString" value="put your connection string here" /> 
    </ConfigurationSettings> 
    </Role> 
</ServiceConfiguration> 

Ahora usted tiene una cadena de conexión se puede cambiar modificando la configuración dentro del portal azul.

Entonces cada vez que necesite para recuperar la cadena de conexión se puede hacer usando:

using Microsoft.WindowsAzure.ServiceRuntime; 

... 

String connString = RoleEnvironment.GetConfigurationSettingValue("DatabaseConnectionString") 

Es posible que tenga que añadir Microsoft.WindowsAzure.ServiceRuntime.dll a sus referencias.

RoleEnviroment.IsAvailable se puede utilizar para comprobar si se está ejecutando en Azure, y si no para volver a la configuración de su web.config.

using System.Configuration; 
using Microsoft.WindowsAzure.ServiceRuntime; 

... 

if (RoleEnvironment.IsAvailable) 
{ 
    return RoleEnvironment.GetConfigurationSettingValue("DatabaseConnectionString"); 
} 
else 
{ 
    return ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString; 
} 

This article has a more verbose explanation of the above.

+1

This no permite la especificación de un proveedor de conexión (requerido por Entity Framework), como System.Data.EntityClient. ¿Alguna idea? –

+0

@DaleAnderson, póngalos en web.config. No se puede encontrar un lugar mejor que trabaja con EF :( – CMircea

+0

Sí. De hecho, encuentro que web.config es mejor para ese tipo de cosas de todos modos, no requiere una redistribución para cambiarlo en un escenario de prueba y se puede administrar fácilmente usando transformaciones de configuración. –

1

Básicamente, debe definir estas configuraciones en el archivo de configuración del servicio de Azure. Compruebe here. Una vez definidos, se pueden cambiar desde el portal de Azure.

3

Para Marco de la entidad, que no es necesario para proporcionar una providerName, ya que hay dentro de la connectionstring. La razón por la que no funciona cuando está en la configuración azul es que contiene & quot que debe volver a establecerse en "antes de crear una nueva EntityConnection. Puede hacerlo usando HttpUtility.HtmlDecode en System.Web.

Cuestiones relacionadas