Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 隐藏sessionState提供程序值的最佳方法_Asp.net Mvc_Azure_Session State_Stackexchange.redis - Fatal编程技术网

Asp.net mvc 隐藏sessionState提供程序值的最佳方法

Asp.net mvc 隐藏sessionState提供程序值的最佳方法,asp.net-mvc,azure,session-state,stackexchange.redis,Asp.net Mvc,Azure,Session State,Stackexchange.redis,我正在MVC应用程序中使用Redis缓存会话状态提供程序。当然,提供程序的所有设置都在my Web.config中。如果我简单地将主机和密钥以及所有内容作为简单字符串输入,应用程序就会工作,因此它看起来如下所示: <sessionState mode="Custom" customProvider="MySessionStateStore"> <providers> <add type="Microsof

我正在MVC应用程序中使用Redis缓存会话状态提供程序。当然,提供程序的所有设置都在my Web.config中。如果我简单地将主机和密钥以及所有内容作为简单字符串输入,应用程序就会工作,因此它看起来如下所示:

  <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>

…其中“[HOST]”和“[KEY]”是实际值。 但这并不完全安全,对吗?有没有办法隐藏这些信息

我知道在Azure配置中使用应用程序设置-事实上,我正在使用一些用于其他用途。但我没有找到一种方法来专门使用这些。我可以创建应用程序设置变量,但在sessionState中访问该值的方法是什么??我试着使用System.Configuration.ConfigurationManager.AppSettings(“[name]”),就是这个,带引号的,还有带单引号的

我想也许我只是对Web.config进行加密……我发现你可以在.pubxml中添加“true”(不带单引号)——但这不适用于常规Azure网站

我还找到了使用aspnet_regiis加密Web.config部分的文章/示例……但在Azure这样的Web服务器场环境中,这样做是行不通的,对吗

那么还有什么其他选择(如果有的话)。。。或者这是不可能的?
谢谢大家!

您可以使用应用程序设置来提供Redis会话状态配置,如下所示

例如,我们希望在应用程序中设置主机和accessKey设置

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

您可以在应用程序设置中选择任何字符串作为“键”。您可以从azure门户设置应用程序设置

现在,在web.config中将此键用作值,如下所示:

<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>


如果愿意,您可以按应用程序设置提供所有参数。您可以按应用程序设置提供少量参数,其余参数按web.config提供。会话状态提供程序将查找您是否在web.config中提供实际值或应用程序设置密钥

所以在这种情况下,它只是简单地设置了引号中的键?!太简单了!是的,就是这样。应用程序设置键入引号。请注意,您无法在azure门户中覆盖这些设置。即使使用相同的键提供应用程序设置,web.config中的值仍将被使用。