代码之家  ›  专栏  ›  技术社区  ›  Jack

asp.net会话状态模式“SQLServer”

  •  16
  • Jack  · 技术社区  · 13 年前

    “我的网站是LIVE。这个问题与在LIVE服务器上配置会话超时有关,而不是在本地主机上。”

    我遇到会话过期过快的问题。链接只需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表中所需的所有表。你可以从下面的图片中看到。

    enter image description here

    但当我运行应用程序时,它会抛出以下错误:

    “无法使用SQL Server,因为SQL Server上未安装ASP.NET 2.0版会话状态,或者ASP.NET没有运行dbo.TempGetVersion存储过程的权限。如果尚未安装ASP.NET会话状态架构,请安装ASP.NET会话态SQL Server 2.0版或更高版本。如果已安装该架构,请授予d的执行权限将bo.TempGetVersion存储过程转换为ASP.NET应用程序池标识或sqlConnectionString属性中指定的Sql Server用户。"

    错误图像:

    enter image description here

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

    非常感谢。

    6 回复  |  直到 13 年前
        1
  •  38
  •   Victor Yarema    9 年前

    为了让它为我工作,我运行了带有以下选项的命令。

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

    我相信 -ssadd 选项(“添加对SQL Server模式会话状态的支持。”)是它正确设置存储过程的原因。看看这个 link 以完成选项列表。

        2
  •  11
  •   Jason Geiger    7 年前

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

    如果您运行了该向导,它不会使用-ssadd标志运行。-ssadd标志用于创建dbo.TempGetVersion过程以及其他过程。

    如果要使用自定义服务器/数据库,则需要将程序作为 跟随。。。

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

    在树中打开“Programmability”,然后首先检查dbo.TempGetVersion是否存在。可能您没有安装正确的架构。

        4
  •  4
  •   user2167048    13 年前

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

    一个正确的例子应该是:

    <sessionState 
    allowCustomSqlDatabase="true" 
    mode="SQLServer" 
    sqlConnectionString="data source=localhost;initial catalog=YourAspStateDatabase;user id=yourLogin;password=yourpassword" cookieless="false" timeout="30"/>
    
        5
  •  2
  •   Rolando Retana    9 年前

    我陷入了困境,没有一个答案对我有效,只是为了以防万一其他人有这个问题,这就是解决我问题的方法,我在cmd中运行:

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

    以防其他人和我陷入同样的境地。

        6
  •  1
  •   Ali Tayyip Aydin    4 年前

    “如果您没有给访问数据库的用户足够的权限,则会导致此错误。用户应该具有执行权限或授予数据库所有者。”

    ** 如果你尝试S的解决方案,它就会被解决 enter image description here

    资料来源: link1