azureazure-web-app-servicestackexchange.redissession-state-provider

How to define connection string for session state in Azure


I am using the RedisSessionStateProvider using a procedimient like this https://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-session-state-caching/

I define its connection string in web.config, in this example is XXXXXX.

 <system.web>
    <compilation debug="true" targetFramework="4.6.1" />
    <httpRuntime targetFramework="4.5" />
    <globalization culture="es-CO" uiCulture="es" />
    <customErrors mode="Off" />
    <sessionState mode="Custom" customProvider="SessionStateStore">
      <providers>
        <add name="SessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" connectionString="XXXXXX" throwOnError="true" applicationName="NominappSession" />
      </providers>
    </sessionState>
  </system.web>

I dont want to put the connection string in the source code. So how can i using the settings in Azure to define this connection string?

I deploy to azure from github, so it uses Kudu. I dont have an external CI server.

Any advice please?


Solution

  • I did it :)

    To do that you need to define the connection string as a environment variable, not as a typical connection string. And in the sesion state provide use the environment variable name.

    This way:

      <appSettings>
        <add key="REDIS_CONNECTION_STRING" value="redis,allowAdmin=true" />
      </appSettings>
      <system.web>
        <sessionState mode="Custom" customProvider="SessionStateStore">
          <providers>
            <add name="SessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" connectionString="REDIS_CONNECTION_STRING" applicationName="REDIS_SESSION_APPLICATION_NAME" throwOnError="true" />
          </providers>
        </sessionState>
      </system.web>
    

    Using that you can now define the connection string in the App Settings of Azure WebSites