问题标签 [aspstate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3820 浏览

asp.net - ASP.NET - 当会话存储在 SQL Server 中时,服务器之间的不同 SessionId

我使用 SQL Server 数据库管理跨 2 个生产 Web 服务器的共享会话状态。
最近我意识到(而且我几乎可以肯定以前不是这种情况)从服务器跳转到服务器时会话并没有真正共享。

两台服务器在同一个域上运行同一个网站,并使用硬件负载平衡器进行平衡。两者都在 IIS7 下运行。并且在两台服务器中,ASP.NET 状态服务都在运行。

在检查 HTTP 标头并使用 SQL 分析器捕获交叉引用时,我发现我认为可能是问题所在。

我的 cookie 中的 SessionId 值是一个 24 个字符的字符串,例如:y4hfairc2xbwlupkdsqpv0nz

由数据库接收并存储在那里的 SessionIDASPState更长,并且具有服务器特定的 8 个字符后缀。例如2476b033,或者2b7731d2在存储在数据库中的所有会话中是一致的。
因此 SessionID 看起来像:y4hfairc2xbwlupkdsqpv0nz2476b033y4hfairc2xbwlupkdsqpv0nz2b7731d2

显然,因为会话不共享,每个服务器都维护自己的会话状态。

任何使用类似配置的人之前可能遇到过这种情况?

谢谢

更新

事实证明:SQL Server 中保存的 SessionId 与从 asp.net 运行时生成的不同,额外的字符是 IIS AppID。现在我必须找出如何更改它,以便两台服务器匹配。到目前为止还没有运气。
任何人?

0 投票
0 回答
298 浏览

asp.net - ASPState 上的 TempInsertStateItemShort 过程执行时间超过 1 秒

我正在一个 .NET 网站上工作,该网站在多个服务器中以负载平衡方式运行,因此我需要在 SQL Server 上进行会话。

在过去的 2 周中,我注意到TempInsertStateItemShort过程的运行时间超过 1 秒。

有没有人有过这样的经历?如何提高 ASPState 数据库的性能?

这里有一些额外的信息 - 目前网站上大约有 10k 用户 - 大约同时有 1k 用户 - ASPState 数据库的大小仅为 3mb(我们不使用太多 Session,仅用于少数事情)

提前致谢!!!!

0 投票
1 回答
2835 浏览

.net - 在 .net 4.0 和 .net 2.0 中使用 aspstate

我的开发机器上设置了一些旧版 .net 2.0 网站。我一直在开发一个运行良好的 4.0 站点。在这两种情况下,都使用相同的会话数据库。

如果我访问 2.0 站点,它会停止 4.0 站点工作并给出此错误:

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

重新启动机器后,4.0 站点再次工作,直到加载 2.0 站点。重置 IIS 不会重置问题 - 到目前为止我发现的唯一方法是重新启动机器。

4.0 站点使用自己的应用程序池,并且站点使用不同的用户连接到数据库(尽管属于同一组)。

谁能描述发生了什么?

0 投票
1 回答
333 浏览

session - 使用 ASPState 的经典 asp

ASP.NET 可以自动将会话保存到数据库。有什么方法可以将会话保存到 Classic ASP 中的数据库?

我需要使用数据库在 ASP.NET 和 Classic ASP 之间共享会话。如果 Classic ASP 不支持此功能。有没有其他方法可以模拟这个?

0 投票
1 回答
152 浏览

asp.net - ASPState 数据库

我有一个问题似乎在任何地方都找不到答案,我有九个应用程序,其中八个运行 .NET 2.0 并且已经运行了 8 年。所有这些都使用 ASP 状态数据库。最近我有一个新站点 - 运行 .NET 4.0。

(这里必须说,以前的站点都不能升级,因为使用了与3.5以上版本不兼容的Bluedragon)。

我还有一台数据库服务器,它运行 2007 年创建的状态数据库......

我可以简单地将我的 .NET 4.0 Web 应用程序指向现有的 StateDB 而没有任何预期的障碍吗?在进行最基本的研究时,模式确实与它看起来一样吗?

0 投票
1 回答
397 浏览

iis - 托管在两个不同服务器(环境)上的相同应用程序如何共享单个 ASPState 数据库?

我有一个 asp.net mvc 2 应用程序托管在两个不同的 Web 服务器(暂存和演示服务器)上。在这两个服务器中,应用程序都托管为默认网站。现在对于这两个网络服务器,我们都使用托管在同一数据库服务器上的两个不同的自定义数据库(StaginDB、DemoDB)。

1.WebServer 1 使用 StagingDB 和 ASPStateDB 2.WebServer 2 使用 DemoDB 和 ASPStateDB

请查找屏幕截图以获取更多详细信息。 在此处输入图像描述

根据上图,我想知道是否可以在两个 Web 服务器(WebServer 1、WebServer 2)之间共享相同的 ASPStateDB。会不会有什么问题?

0 投票
3 回答
1870 浏览

sql - 在 AWS RDS 上使用 ASP 会话状态数据库

我知道这是之前在 AWS 论坛中讨论过的话题

以及如何在 Amazon RDS 上使用 SQL Server 模式设置 sessionState

正如上面的线程和一些堆栈溢出文章中提到的,似乎有一种方法可以使用 AWS RDS 获取 SQL 会话。我使用上面的 stackoverflow 作为指导来尝试设置我的 ASPState 数据库。使用上述 stackoverflow 文章中的 pastebin 脚本进行“无作业”InstallSqlState.sql 仍然会导致我出现问题,因为它尝试使用“tempdb”和“master”。我无权访问这些数据库,也无法授予自己这样做的权限。

但是有一个使用 EC2 服务器上的会话表的工作站点。根据上面的 stackoverflow 文章,我使用了 SQL 导入/导出工具。

数据库似乎可以复制过来,表和存储过程似乎都存在且正确。

在我的 web.config 中,我有:

但是,当我运行我的网站时,我得到了错误:

有没有人设法在 AWS RDS 上使用 SQL 实现会话状态,或者可以向我指出可以解释我需要采取的步骤的资源?

0 投票
2 回答
1581 浏览

sql-server - 是否可以清除mssql中的aspstate日志

我的 ASPState.LDF 文件现在超过 17GB,其中一些数据已经很旧了。有没有办法删除所有旧数据?

仍在学习 SQL 数据库管理,而且我是使用 ASPState 的新手。

0 投票
0 回答
2052 浏览

asp.net - 无法向会话状态服务器发出会话状态请求,服务器正在运行

我随机收到以下错误,有时有效,但有时会失败

无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State 服务已启动并且客户端和服务器端口相同。如果服务器在远程机器上,请通过检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值来确保它接受远程请求。如果服务器在本地机器上,并且如果前面提到的注册表值不存在或设置为 0,则状态服务器连接字符串必须使用“localhost”或“127.0.0.1”作为服务器名称。

我在 Web.config 中的 sessionState 配置如下:

我已经仔细检查了 ASP.NET 状态服务器是否已启动并正在运行。我还检查了 ASP.NET 状态服务器是否在端口 42424 上运行。事实上,有时可以。我的 IIS 应用程序池是 .NET 4 集成管道。

我还检查了 Microsoft 的这篇文章,建议增加 stateNetworkTimeout。但对我来说似乎不是一个好的解决方案,因为服务器负载不重。

当我转到事件查看器时,我看到以下警告:

我可以做些什么来进一步调查这个问题?

0 投票
3 回答
8985 浏览

c# - 无法打开登录请求的数据库“ASPState”。登录失败。用户“xxxx”登录失败

我正在开发一个使用 Asp.Net Web 表单和 Sql 服务器的项目。当我运行应用程序时,我收到错误Unable to connect Sql Server Session Database,内部异常是Cannot open database ASPState requested by the login.

我做了一些谷歌搜索来解决这个问题。我没有sa密码,所以我无法登录sa为新创建的用户分配权限给 ASPState 数据库。

当我登录时,我在 Sql Server 上没有看到任何 ASPState 数据库。所以我想我可能需要在我的机器上运行 aspnet reg exe。所以我尝试运行 aspnetreg_regsql.exe 但出现以下错误。

执行 SQL 文件“InstallCommon.sql”时出错。SQL 错误编号为 5170,SqlException 消息为:无法创建文件 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\aspnetdb.mdf',因为它已经存在。更改文件路径或文件名,然后重试该操作。

创建数据库失败。无法创建列出的某些文件名。检查相关错误。

正在创建 aspnetdb 数据库...

我现在完全空白来解决这个问题,我非常感谢你的建议。本期暂挂生产。