2015-06-03 24 views
6

Sto utilizzando un provider di stato sessione cache Redis nella mia applicazione MVC. Naturalmente, tutte le impostazioni per il provider sono nel mio Web.config. L'applicazione funziona se ho semplicemente messo l'Ostia e la chiave e tutto ciò che come semplici stringhe, in modo che appaia simile al seguente:Il modo migliore per nascondere i valori per il provider sessionState

<sessionState mode="Custom" customProvider="MySessionStateStore"> 
     <providers> 
      <add 
      type="Microsoft.Web.Redis.RedisSessionStateProvider" 
      name="MySessionStateStore" 
      host = "[HOST]" 
      port = "6379" 
      accessKey = "[KEY]" 
      ssl = "false" 
      throwOnError = "true" 
      retryTimeoutInMilliseconds = "5000" 
      databaseId = "0" 
      applicationName = "TRAXProSurvey" 
      connectionTimeoutInMilliseconds = "5000" 
      operationTimeoutInMilliseconds = "1000" 
      /> 
     </providers> 
    </sessionState> 

... dove "[HOST]" e "[KEY]" sono invece la valori reali. Ma non è esattamente sicuro, giusto? C'è un modo per nascondere queste informazioni in qualche modo?

Conosco l'uso delle Impostazioni app nella configurazione di Azure, infatti sto usando un paio per qualcos'altro. Ma non sto trovando un modo per essere in grado di usare quelli qui specificatamente. Posso creare la variabile di impostazione dell'app, ma qual è il modo per accedere a tale valore all'interno della sessioneStato ?? Ho provato a usare System.Configuration.ConfigurationManager.AppSettings ("[nome]") - solo quello, quello con le virgolette e quello con le virgolette singole.

ho pensato che forse ho solo crittografare il web.config .... ho scoperto che è possibile aggiungere "< 'MSDeployEnableWebConfigEncryptRule'> true < '/ MSDeployEnableWebConfigEncryptRule'>" (senza virgolette) nella .pubxml - ma non funziona per i normali siti Web di Azure.

Ho trovato anche articoli/esempi per crittografare le sezioni di Web.config utilizzando aspnet_regiis .... ma farlo non funzionerebbe in un ambiente Web farm come Azure, giusto?

Quindi quali altre opzioni (se presenti) ci sono? ... o è solo impossibile? Grazie!

risposta

4

È possibile utilizzare le impostazioni app per fornire la configurazione dello stato sessione Redis come di seguito.

Ad esempio, vogliamo impostare host e accessKey nelle impostazioni dell'app.

<appSettings> 
    <add key="SomeHostKey" value="actual host value" /> 
    <add key="SomeAccessKey" value="actual access key" /> 
</appSettings> 

è possibile selezionare qualsiasi stringa come "chiave" all'interno delle impostazioni dell'app. puoi impostare le impostazioni delle app dal portale azzurro.

Ora, utilizzare questa chiave come valore nel web.config come di seguito:

<sessionState mode="Custom" customProvider="MySessionStateStore"> 
     <providers> 
      <add 
      type="Microsoft.Web.Redis.RedisSessionStateProvider" 
      name="MySessionStateStore" 
      host = "SomeHostKey" 
      port = "6379" 
      accessKey = "SomeAccessKey" 
      ssl = "false" 
      throwOnError = "true" 
      retryTimeoutInMilliseconds = "5000" 
      databaseId = "0" 
      applicationName = "TRAXProSurvey" 
      connectionTimeoutInMilliseconds = "5000" 
      operationTimeoutInMilliseconds = "1000" 
      /> 
     </providers> 
    </sessionState> 

È in grado di fornire tutti i parametri per le impostazioni delle applicazioni, se si vuole. puoi fornire pochi parametri per impostazioni dell'app e rimanere da web.config come desideri. Il provider dello stato della sessione troverà se stai fornendo il valore effettivo o la chiave di impostazione dell'app in web.config.

+0

Quindi, in questo caso, è semplicemente la chiave tra le virgolette delle impostazioni ?! Cosi 'semplice! – Andarta

+0

Sì, è così. Le impostazioni dell'app vengono inserite tra virgolette. –

+0

Si noti che non è possibile sovrascrivere queste impostazioni nel portale azzurro. anche se fornisci le impostazioni dell'app con la stessa chiave, verrà comunque utilizzato il valore in web.config. – MPavlak