【发布时间】:2019-11-17 19:02:28
【问题描述】:
我正在尝试为 redis 实现 Azure 缓存以管理我的应用程序中的会话。这是在本地主机上工作。托管到 IIS 后,在 webconfig 文件中出现编译错误。
我在 azure 门户中为 redis 创建了 azure 缓存。我已经对代码进行了相应的更改。当我在本地主机上使用源代码运行时,它正在工作。托管到 IIS 后出现以下错误
"提供者必须实现类
System.Web.SessionState.SessionStateStoreProviderBase
<sessionState mode="Custom" customProvider="MySessionStateStore">
<providers>
<add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="myhostname" accessKey="Key1" ssl="true" />
</providers>
</sessionState>
模块添加如下
<system.webServer>
<modules>
<remove name="Session" />
<add name="Session" type="Microsoft.AspNet.SessionState.SessionStateModuleAsync, Microsoft.AspNet.SessionState.SessionStateModule, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode" />
</modules>
</system.webServer>
我希望会话值存储在 redis 的 azure 缓存中。但是在 IIS 上托管后它不起作用。
【问题讨论】:
-
您在部署到 IIS 时是否正在转换您的 web.config?
-
@DdW - 我遇到了同样的问题 - 具有上述配置,并且在部署到 Azure 应用服务时通过 octopus deploy 转换 web.config
-
@anD666 转换时要小心,尤其是模块部分很棘手。查看转换后的最终结果,并与本地版本进行比较。
-
@DdW - 转换没有触及模块部分。它只是添加会话状态部分。
-
@anD666 你也需要模块部分...
标签: asp.net redis azure-caching