首先,确保您的web.config 或machine.config 配置正确。你可以看看Oracle Session State Store documentation,或者下面:
<?xml version="1.0"?>
<configuration xmlns=
"http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<add name="my_sessionstate_app_con_string" connectionString=
"User Id=scott;Password=tiger;Data Source=Oracle"/>
</connectionStrings>
<system.web>
<!-- Enable and customize OracleSessionStateProvider -->
<sessionState mode="Custom" customProvider="MyOracleSessionStateStore">
<providers>
<add name="MyOracleSessionStateStore"
type="Oracle.Web.SessionState.OracleSessionStateStore,
Oracle.Web, Version=2.111.6.20, Culture=neutral,
PublicKeyToken=89b483f429c47342"
connectionStringName="my_sessionstate_app_con_string"/>
</providers>
</sessionState>
</system.web>
</configuration>
其次,您不必在开发期间加密您的 Oracle 会话状态存储连接字符串。您可以在部署时使用 aspnet_regiis 对其进行加密,如下所示。
aspnet_regiis -pef connectionStrings "c:\inetpub\wwwroot\myapp\"
如果上面的命令行运行正常,但您的 Web 应用程序产生 RSA 错误消息,请尝试将以下帐户(或您使用的特定帐户)添加到 RSA 容器:
aspnet_regiis -pc "NetFrameworkConfigurationKey" -exp
aspnet_regiis -pa "NetFrameworkConfigurationKey" "ASPNET"
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NETWORK SERVICE"
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
顺便说一句,我不必在Global.ascx 中实现OracleSessionStateStore。我只是参考Session["key"] = value; 和var value = Session["key"];
此外,请确保您的 DBA 设置了一个作业来清理会话状态表。