我在我的MVC应用程序中使用Redis缓存会话状态提供程序。当然,提供程序的所有设置都在我的Web.config中。如果我简单地将Host和Key以及所有内容放在简单的字符串中,该应用程序就可以工作,所以它看起来像这样:
<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>
......其中&#34; [主持人]&#34;和&#34; [KEY]&#34;而是实际值。 但那不完全安全,对吗?有办法以某种方式隐藏这些信息吗?
我知道在Azure配置中使用应用程序设置 - 实际上我正在使用其他的一些东西。但我没有找到一种方法可以专门使用这些。我可以创建app设置变量,但是在sessionState中访问该值的方法是什么?我尝试使用System.Configuration.ConfigurationManager.AppSettings(&#34; [name]&#34;) - 就是那个,带引号的,带单引号的。
我想也许我只是加密了Web.config ....我发现你可以添加&#34;&lt;&#39; MSDeployEnableWebConfigEncryptRule&#39;&gt; true&lt;&#39; / MSDeployEnableWebConfigEncryptRule&#39; &GT;&#34; .pubxml中没有单引号(但没有单引号) - 但这对常规Azure网站不起作用。
我还发现了使用aspnet_regiis加密Web.config部分的文章/示例....但这样做不适用于像Azure这样的Web场环境,对吗?
那么有什么其他选择(如果有的话)? ......或者这是不可能的? 谢谢!
答案 0 :(得分:5)
您可以使用App Settings提供如下所示的Redis会话状态配置。
例如,我们想在应用设置中设置host和accessKey。
<appSettings>
<add key="SomeHostKey" value="actual host value" />
<add key="SomeAccessKey" value="actual access key" />
</appSettings>
您可以在应用设置中选择任何字符串作为“键”。您可以从azure portal设置应用程序设置。
现在,在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中提供实际值或应用程序设置键。