Domanda

Attualmente ho un'applicazione in Azure e ogni volta che la spingiamo nel segmento di stadiazione, non possiamo veramente testare poiché la stringa di connessione punta al database Prod.

Qualcuno mi ha detto che dovresti essere in grado di impostare la stringa di connessione nel file ServiceConfiguration.cscfg (o con) il file web.config. In questo modo è possibile modificare la stringa di connessione nel portale di Azure invece di ripubblicare un'app Who.

Qualcuno sa come fare questo?

È stato utile?

Soluzione

Nel tuo file ServiceConfiguration.cscfg:

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

Ora hai una stringa di connessione che puoi modificare modificando la configurazione all'interno del portale di Azure.

Quindi ogni volta che è necessario recuperare la stringa di connessione, puoi farlo utilizzando:

using Microsoft.WindowsAzure.ServiceRuntime;

...

String connString = RoleEnvironment.GetConfigurationSettingValue("DatabaseConnectionString")

Potrebbe essere necessario aggiungere Microsoft.WindowSazure.Serviceruntime.dll ai tuoi riferimenti.

RoleEnviroment.IsAvailable Può essere utilizzato per testare se sei in esecuzione in Azure e, se non per tornare alle impostazioni Web.Config.

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

...

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

Questo articolo ha una spiegazione più verbosa di quanto sopra.

Altri suggerimenti

Per l'Entity Framework, non è necessario fornire un providername, è già all'interno della stretta di connessioni. Il motivo per cui non funziona quando è in impostazioni di Azure è che contiene "simbolo che deve essere restituito a" prima di creare una nuova connessione entità. È possibile farlo utilizzando HTTputality.htmldeCode in System.Web.

Fondamentalmente è necessario definire queste impostazioni nel file di configurazione del servizio di Azure. Dai un'occhiata qui. Una volta definiti questi possono essere cambiati dal portale di Azure.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top