【发布时间】:2022-03-10 19:29:15
【问题描述】:
“我的网站是实时的。这个问题与在实时服务器上配置会话超时有关,而不是在本地主机上。”
我遇到了会话过期太快的问题。仅在 2-5 分钟内链接。我尝试了很多东西,最后决定以“SQL Server”模式存储会话
在我的 web.config 文件中,我有以下编码:
<sessionState mode="SQLServer" cookieless="false" timeout="45"
sqlConnectionString="data source=xxx.xx.xx.xxx;uid=xxxxxxx;pwd=xxxxxxxx"/>
我拥有服务器上 ASPState 表中所需的所有表。您可以从下图中看到它。
但是当我运行我的应用程序时,它会抛出以下错误:
“无法使用 SQL Server,因为 SQL Server 上没有安装 ASP.NET 版本 2.0 会话状态,或者 ASP.NET 没有运行 dbo.TempGetVersion 存储过程的权限。如果 ASP.NET 会话状态尚未安装架构,请安装 ASP.NET 会话状态 SQL Server 2.0 或更高版本。如果已安装架构,请将 dbo.TempGetVersion 存储过程的执行权限授予 ASP.NET 应用程序池标识或sqlConnectionString 属性中指定的 Sql Server 用户。"
错误图片:
我无法理解确切的问题以及如何解决它。任何帮助将不胜感激。
谢谢
【问题讨论】:
-
您是否尝试为连接字符串中的用户 ID 授予 DbExecuter 角色权限
-
不,我没有尝试过这样的事情。
-
@jackerj,您写道“我拥有服务器上 ASPState 表中所需的所有表”。首先,当您编写“ASPState 表”时,看起来您的意思是“ASPState db”。我对么?另一个问题是:您如何检查您在数据库中找到的那些表是否正是应该存在的?
标签: asp.net sql-server session session-state session-timeout