Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.Net SQL Server会话状态与持久会话状态_Asp.net_Sql Server_Session_Session State - Fatal编程技术网

ASP.Net SQL Server会话状态与持久会话状态

ASP.Net SQL Server会话状态与持久会话状态,asp.net,sql-server,session,session-state,Asp.net,Sql Server,Session,Session State,我正在研究并尝试将会话变量自动保存到SQLServer中。我发现这个链接正在讨论(称之为“选项1”)和这个链接正在讨论(称之为“选项2”) 主要的区别似乎是,在选项1中,如果运行SQL Server的机器关闭,会话数据将丢失,而选项2则会将会话数据持久化。在选项1中,进程似乎使用了tempdb,而选项2似乎通过使用ASPState数据库来持久化会话数据 我有几个问题似乎找不到答案: 在第一个选项中,本文讨论了web配置中关于标记所需的配置。这不会添加到持久性案例中(选项2)。两种情况下的是否应该

我正在研究并尝试将会话变量自动保存到SQLServer中。我发现这个链接正在讨论(称之为“选项1”)和这个链接正在讨论(称之为“选项2”)

主要的区别似乎是,在选项1中,如果运行SQL Server的机器关闭,会话数据将丢失,而选项2则会将会话数据持久化。在选项1中,进程似乎使用了tempdb,而选项2似乎通过使用ASPState数据库来持久化会话数据

我有几个问题似乎找不到答案:

  • 在第一个选项中,本文讨论了web配置中关于标记所需的配置。这不会添加到持久性案例中(选项2)。两种情况下的是否应该相同
  • 我尝试了第二种选择,因为这似乎更符合我的案例场景。我首先下载了PersistSQLState.exe,它只是自我提取InstallPersistSqlState.sql和UninstallPersistSqlState.sql脚本。我运行了InstallPersistSQLState.sql,该程序已成功完成,并在sql Server中创建了“ASPState”数据库。我使用选项2中所述的格式设置标记,如上文第1)点所述

    运行应用程序时,我出现以下错误:

    无法使用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用户。“

    这概括了两件事:Asp.Net 2.0版会话状态可能尚未安装,进程无法运行dbo.TempGetVersion存储过程(由于各种原因)

  • 由InstallPersistSqlState.sql脚本创建的ASPState数据库中不存在存储过程dbo.TempGetVersion。此存储过程是否实际与tempdb(非持久)相关,因此为什么ASPState的架构不包含它

  • 这是需要安装的吗?如果是,遵循什么过程?!在运行InstallPersistSQLState.sql脚本后是否应将其安装到ASPState数据库中?如果不是,具体执行什么操作?选项1或选项2中都没有与此“.exe”相关的内容

  • 最后,我还尝试卸载持久性案例,而不是运行与选项1(非持久性)相关的脚本。在这种情况下,上面第一个链接中提供的脚本似乎不起作用;返回2个错误,但找不到作业?!。有人知道为什么会发生这种情况,并且正确的脚本是否存在于某种在线位置


  • 如果有任何帮助,我们将不胜感激,因为在这个主题上,文档似乎很差。

    我的问题中列出的选项1和选项2文章具有误导性,这就是为什么我浪费了一整天的时间试图用错误的信息使其工作:我只是手头没有正确的文章

    下面是我为实现持久会话状态所做的工作。希望它能对任何想要实现相同功能的人有所帮助

  • 在计算机上,以管理员模式打开CMD
  • 将目录更改为.Net framework文件夹:

    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

  • 运行以下命令:

    aspnet_regsql.exe-S“SQLServerInstanceName”-U“用户名”-p“密码”-ssadd-SSP类型

  • 上面第2点中的命令的小说明

    • Aspnet_regsql.exe-是在计算机上安装Asp.Net会话状态的.exe
    • -S定义SQL Server实例名称
    • -U定义用户名-
    • -P定义密码
    • ssadd定义为会话状态创建新数据库
    • sstype定义会话状态的类型。p是持久的

    • 最后,在要实现持久会话状态的Asp.Net应用程序的web.config中,将标记更改为如下所示:

    有关完整信息,请访问此网站并参考SQL Server模式。

    我问题中列出的选项1和选项2文章具有误导性,这就是为什么我浪费了一整天的时间试图使用错误的信息:我手头上没有合适的文章

    下面是我为实现持久会话状态所做的工作。希望它能对任何想要实现相同功能的人有所帮助

  • 在计算机上,以管理员模式打开CMD
  • 将目录更改为.Net framework文件夹:

    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

  • 运行以下命令:

    aspnet_regsql.exe-S“SQLServerInstanceName”-U“用户名”-p“密码”-ssadd-SSP类型

  • 上面第2点中的命令的小说明

    • Aspnet_regsql.exe-是在计算机上安装Asp.Net会话状态的.exe
    • -S定义SQL Server实例名称
    • -U定义用户名-
    • -P定义密码
    • ssadd定义为会话状态创建新数据库
    • sstype定义会话状态的类型。p是持久的

    • 最后,在要实现持久会话状态的Asp.Net应用程序的web.config中,将标记更改为如下所示:
    • <