Octopus Deploy转换SessionState提供程序

时间:2017-08-22 17:50:08

标签: xml web-config session-state octopus-deploy web.config-transform

对于我们的本地调试,我们在web.config

中使用它
<sessionState mode="Custom" customProvider="MyAppStateStore" timeout="480">
  <providers>
    <add name="MyAppStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" 
         applicationName="MyApp" 
         host="127.0.0.1" 
         accessKey="" 
         ssl="false" />
  </providers>
</sessionState>

在我们的开发服务器上,我们希望它是这样的:

<sessionState mode="Custom" customProvider="MyAppStateStore" timeout="480">
  <providers>
    <add name="MyAppStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider"
         applicationName="MyApp" 
         host="www.oursite.com.backends"
         port="1234"
         databaseId="1"
         accessKey=""
         connectionTimeoutInMilliseconds="5000"
         operationTimeoutInMilliseconds="1000"
         throwOnError="true"
         ssl="false" />
  </providers>
</sessionState>

对于我们的大多数web.config appSettings,我们在部署期间使用OD的变量进行转换。有没有办法在变换中包含这样的复杂设置而不使用变换.config文件?

1 个答案:

答案 0 :(得分:0)

使用配置转换(web..config)是最简单的方法。如果要使用占位符,可以将其与“文件中的替换变量”功能结合使用。例如:

<强> web.production.config

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <sessionState mode="Custom" customProvider="MyAppStateStore" timeout="480">
    <providers>
      <add 
         xdt:Transform="Replace" 
         xdt:Locator="Match(name)"
         name="MyAppStateStore" 
         type="Microsoft.Web.Redis.RedisSessionStateProvider"
         applicationName="MyApp" 
         host="#{Host}"
         port="1234"
         databaseId="1"
         accessKey=""
         connectionTimeoutInMilliseconds="5000"
         operationTimeoutInMilliseconds="1000"
         throwOnError="true"
         ssl="false" />
    </providers>
  </sessionState>
</configuration>

然后,您可以将Host定义为Octopus中的变量。

这里有很多信息和例子:

https://octopus.com/docs/deploying-applications/configuration-files