Я использую поставщик состояния сеанса кеша Redis в своем приложении MVC. Разумеется, все настройки провайдера есть в моем 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>
...где "[HOST]" и "[KEY]" вместо фактических значений. Но это не совсем безопасно, верно? Можно ли как-то скрыть эту информацию?
Я знаю об использовании параметров приложения в конфигурации Azure — на самом деле я использую пару для чего-то другого. Но я не нахожу способа использовать их здесь специально. Я могу создать переменную настройки приложения, но как получить доступ к этому значению в sessionState?? Я пытался использовать System.Configuration.ConfigurationManager.AppSettings("[name]") - только то, что с кавычками, и то с одинарными кавычками.
Я подумал, может быть, я просто зашифровал Web.config... Я обнаружил, что вы можете добавить "‹'MSDeployEnableWebConfigEncryptRule'>true‹'/MSDeployEnableWebConfigEncryptRule'>" (без одинарных кавычек) в .pubxml, но это не работает для обычных веб-сайтов Azure.
Я также нашел статьи/примеры для шифрования разделов Web.config с помощью aspnet_regiis.... но это не сработает в среде веб-фермы, такой как Azure, верно?
Итак, какие еще варианты (если они есть) есть? ... или это просто невозможно? Благодарю вас!