【问题标题】:Can appcmd modify a web.config to use redis for session?appcmd 可以修改 web.config 以使用 redis 进行会话吗?
【发布时间】:2015-10-27 20:23:11
【问题描述】:

鉴于以下 iis web.config

<sessionState customProvider="Foo" mode="Custom" timeout="90">
  <providers>
    <add name="FooProvider" type="Redis"/>
  </providers>
</sessionState>

您将如何使用 appcmd 更改 &lt;add name="FooProvider.. 的值?

我可以更改&lt;sessionState customProvider&gt;

appcmd.exe set config 'mycompany/mysite' -section:system.web/sessionState -customProvider:"bar" -timeout:90

但是我不知道怎么把&lt;add name="FooProvider"改成&lt;add name="BarProvider"

我可以删除提供程序,也可以添加提供程序,但是因为我使用 CHEF 来自动执行此操作,所以我需要一种幂等方式,并且可以连续运行多次。

删除提供者

 appcmd set config 'mycompany/mysite' -section:system.web/sessionState /-"providers.[name='RedisSessionStateStoreProvider']

创建提供者

 appcmd set config 'mycompany/mysite' -section:system.web/sessionState /+"providers.[type='Redis',name='RedisSessionStateStoreProvider']"

清除提供者

appcmd clear config 'mycompany/mysite' -section:system.web/sessionState /providers

如何修改提供程序的值而不删除并重新创建它?

【问题讨论】:

    标签: iis appcmd


    【解决方案1】:

    我不相信这是可能的,但是我能够通过使用 CHEF 可以对资源进行有条件的“通知”这一事实来解决它。如果 web.config 文件发生更改,我只能通过“通知”来保持幂等性。

    作为参考,这些是有效的命令。

    Redis 配置

    appcmd clear config 'MyCompany/mysite' '-section:system.web/sessionState'
    appcmd.exe set config 'MyCompany/mysite' '-section:system.web/sessionState' '-mode:Custom' '-timeout:90' '-customProvider:RedisSessionStateStoreProvider'
    appcmd set config 'MyCompany/mysite' '-section:system.web/sessionState' /+"providers.[name='RedisSessionStateStoreProvider',connectionString='10.10.10.10:6379,connectTimeout=5000,abortConnect=false,ssl=false',type='RedisAspNetProviders.SessionStateStoreProvider, RedisAspNetProviders']"
    

    Sql 配置

    appcmd clear config 'MyCompany/mysite' '-section:system.web/sessionState'
    appcmd.exe set config 'MyCompany/mysite' '-section:system.web/sessionState' '-mode:SQLServer' '-allowCustomSqlDatabase:true' '-sqlConnectionString:network=dbmssocn; initial catalog=ASPState; user id=webfarmsession; connection lifetime=100;max pool size=200;data source=10.254.50.51; failover partner=10.254.50.50; password=xxxxxx' '-cookieless:false' '-timeout:90'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 2020-02-01
      • 1970-01-01
      • 2011-02-24
      • 2020-09-25
      • 1970-01-01
      相关资源
      最近更新 更多