“我的网站是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"/>
我拥有服务器上ASPState表所需的所有表。您可以从下图中看到它。
但是当我运行我的应用程序时,它会抛出以下错误:
“无法使用SQL Server,因为SQL Server上未安装ASP.NET 2.0版会话状态,或者ASP.NET没有运行dbo.TempGetVersion存储过程的权限。如果是ASP.NET会话状态尚未安装schema,请安装ASP.NET Session State SQL Server 2.0或更高版本。如果已安装架构,请将dbo.TempGetVersion存储过程的执行权限授予ASP.NET应用程序池标识,或者sql Server用户在sqlConnectionString属性中指定。“
错误图片:
我无法理解确切的问题以及如何解决它。任何帮助将不胜感激。
谢谢
答案 0 :(得分:32)
为了让这个对我起作用,我使用以下选项运行命令。
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -S . -E -ssadd -sstype p
我相信-ssadd
选项(&#34;添加对SQL Server模式会话状态的支持。&#34;)是导致它正确设置存储过程的原因。请参阅此link以获取选项列表。
答案 1 :(得分:5)
在树中打开“可编程性”并首先检查dbo.TempGetVersion是否存在。可能你没有安装正确的架构。
答案 2 :(得分:2)
也许你的web.config中有一个错误的标签
一个正确的例子应该是:
<sessionState
allowCustomSqlDatabase="true"
mode="SQLServer"
sqlConnectionString="data source=localhost;initial catalog=YourAspStateDatabase;user id=yourLogin;password=yourpassword" cookieless="false" timeout="30"/>
答案 3 :(得分:2)
所有这些信息都是非常有价值的,但是根据您的情况,还有一些更有价值的注释。
如果您运行向导,则它不会与-ssadd标志一起运行。 -ssadd标志是创建dbo.TempGetVersion过程以及其他过程的原因。
如果您要转到自定义服务器/数据库,则需要以 跟随...
devDependencies
答案 4 :(得分:0)
我被困在这里,并没有任何答案对我有用,以防其他人有这个问题,这是解决了我的问题,我在cmd跑了:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -C "Data Source=.\SQL2012;Integrated Security=True" -ssadd
以防其他人遇到与我相同的情况。