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 服务器上没有安装 ASP.NET 2.0 版会话状态,或者 ASP.NET 没有运行 dbo.TempGetVersion 存储过程的权限。如果 ASP.NET 会话状态架构没有已安装,请安装 ASP.NET 会话状态 SQL Server 2.0 或更高版本。如果已安装架构,请将 dbo.TempGetVersion 存储过程的执行权限授予 ASP.NET 应用程序池标识或 Sql Server 用户在 sqlConnectionString 属性中指定。”

错误图片:

在此处输入图像描述

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

谢谢你

4

5 回答 5

36

为了让它对我有用,我使用以下选项运行了命令。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -S . -E -ssadd -sstype p

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

于 2014-04-30T14:27:11.710 回答
9

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

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

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

aspnet_regsql.exe -S YourServerName -d YourDatabaseName -ssadd -E -sstype c
  • -S 是您的服务器名称标志
  • -D 是您的数据库名称标志
  • -ssadd 添加对 SQLServerm 模式会话状态的支持。如果需要删除程序,请运行 -ssremove。
  • -E 使用当前的 Windows 凭据连接到目标数据库以进行设置。
  • -sstype c 表示这是一个自定义数据库名称。
于 2018-12-20T13:35:30.440 回答
5

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

于 2013-03-13T09:13:40.410 回答
4

也许你的 web.config 中有一个错误的标签

一个正确的例子应该是:

<sessionState 
allowCustomSqlDatabase="true" 
mode="SQLServer" 
sqlConnectionString="data source=localhost;initial catalog=YourAspStateDatabase;user id=yourLogin;password=yourpassword" cookieless="false" timeout="30"/>
于 2013-03-13T19:29:47.453 回答
0

我被困住了,没有一个答案对我有用,以防万一其他人有这个问题,这就是解决我的问题的原因,我在 cmd 中运行:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -C "Data Source=.\SQL2012;Integrated Security=True" -ssadd

以防万一其他人陷入与我相同的情况。

于 2017-05-10T22:36:02.547 回答