asp.net会话状态模式"SQLServer"

jac*_*erj 13 sql-server asp.net session session-state session-timeout

"我的网站是LIVE.这个问题与LIVE服务器上的配置会话超时有关,而与localhost无关."

我的会话过期很快就会出现问题.仅在2-5分钟内链接.我尝试了很多东西,最后决定将会话存储在"SQL Server"模式下

在我的web.config文件中,我有以下编码:

<sessionState mode="SQLServer" cookieless="false" timeout="45"
sqlConnectionString="data source=xxx.xx.xx.xxx;uid=xxxxxxx;pwd=xxxxxxxx"/>
Run Code Online (Sandbox Code Playgroud)

我拥有服务器上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应用程序池标识或Sql Server用户在sqlConnectionString属性中指定."

错误图片:

在此输入图像描述

我无法理解确切的问题以及如何解决它.任何帮助将不胜感激.

谢谢

Ken*_*enn 33

为了让这个对我有用,我使用以下选项运行命令.

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -S . -E -ssadd -sstype p
Run Code Online (Sandbox Code Playgroud)

我相信-ssadd选项("添加对SQL Server模式会话状态的支持.")是导致它正确设置存储过程的原因.请参阅此链接以获取选项列表.


Jas*_*ger 6

所有这些信息都非常有价值,但根据您的情况,还有一些更有价值的注释。

如果您运行该向导,它不会使用 -ssadd 标志运行。-ssadd 标志是创建 dbo.TempGetVersion 过程和其他过程的原因。

如果您要使用自定义服务器/数据库,您将需要按如下方式运行该程序...

aspnet_regsql.exe -S YourServerName -d YourDatabaseName -ssadd -E -sstype c
Run Code Online (Sandbox Code Playgroud)
  • -S 是你的服务器名标志
  • -D 是您的数据库名称标志
  • -ssadd 添加对 SQLServerm 模式会话状态的支持。如果需要删除过程,请运行 -ssremove。
  • -E 使用当前的 Windows 凭据连接到目标数据库以进行设置。
  • -sstype c 表示这是自定义数据库名称。

  • 在尝试了 apsnet_regsql.exe 命令参数的多种变体之后,这是对我有用的一个。其他人没有安装必要的存储过程 (2认同)

Ple*_*eun 5

在树中打开"可编程性"并首先检查dbo.TempGetVersion是否存在.可能你还没有安装正确的架构.