问题标签 [stateserver]

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 投票
2 回答
958 浏览

c# - 在第一次登录会话处于活动状态时限制第二次登录

对于 Asp.NET Web 应用程序,使用状态服务器会话和 Web 场;如何限制用户多次登录。如果用户已经登录,则不应允许他使用来自不同浏览器的相同凭据登录。我找到了一个链接,可以自动注销以前的会话Single Session Enforcement。但要求是让第一个会话保持活动状态,而不是让他退出。每当第二个会话尝试登录时,他应该会收到错误消息,指出“用户已登录”。

我们有 20 分钟的会议时间。

先感谢您。

0 投票
2 回答
43 浏览

jqgrid - StateServer sessionState 和 JQGrid

我的用户经常从 Web 应用程序中注销,所以我正在尝试使用<sessionState mode="StateServer" cookieless="false" timeout="480" />,但我收到服务器错误 500,因为无法序列化 JQGrid。有任何想法吗?

0 投票
1 回答
757 浏览

asp.net - 自定义会话状态模块 - 使用 ASP 状态服务

编辑(澄清我的问题):是否有一个 API 或方法可以让我们从我们自己的代码中使用 Out Of Process Asp.NET 状态服务,或者是专有的?

我们正在研究实现一个自定义会话状态模块,该模块重用 asp 附带的模块的组件。我们的主要目标是防止会话锁定(不将会话状态模式更改为只读)。这可能吗?

我们希望实现的关键部分之一是能够使用 .NET 内部使用的相同 Out of Proc 会话存储提供程序(ASP 状态服务),因为我们有一个负载平衡的环境t 使用粘性会话。

我已经深入研究了参考源中的代码,我的发现如下。我希望有人有一个不同的实用程序,可以潜在地用于将自定义会话状态模块集成到 ASP 状态服务中。


默认会话模块是System.Web.SessionState.SessionStateModule. 这是一Sealed堂课。此类似乎是唯一使用SessionStateMode.StateServer枚举值(在 web 配置中指定)的类。

当设置此标志时,模块将_store变量设置为一个新System.Web.SessionState.OutOfProcSessionStateStoreFriend Sealed类。

我最初对如何做到这一点有一些想法,但由于上面类的修饰符,我无法做到这些。还有其他可以采取的方法吗?

  1. 实例化一个新的System.Web.SessionState.SessionStateModule并引用该_store变量。这不起作用,显然是因为_store变量是私有的。
  2. 我尝试创建一个继承自的类,System.Web.SessionState.SessionStateModule但显然因为它sealed不起作用。
  3. 看着从 .NET 框架代码中复制代码。意识到这将是一个非常糟糕的决定。

我有什么选择吗?

0 投票
0 回答
154 浏览

asp.net - 为什么回收我的 IIS 应用程序池后出现 TypeLoadExceptionHolder 错误?

我有一个使用 StateServer 进行会话的 ASP.NET Web 应用程序。该应用程序在会话中存储了几位信息;特别是一个对象图,其中涉及的所有对象都具有 Serializable 属性。在我回收托管 Web 应用程序的应用程序池之前,这一切都很好。

如果我已登录并且我的会话中存储了一个对象图,并且我回收了应用程序池然后重新加载页面,我会收到以下异常:

我的印象是,由于会话状态存储在 proc 之外,因此它不会受到回收应用程序池的影响。不是这样吗?

0 投票
0 回答
34 浏览

asp.net - ASP.NET - 运行时可编辑的表单 + 在数据库/SQL 会话状态中存储有关它的信息

我想知道是否有人在运行时有其他关于可修改表单的信息来源+如何存储它们。

我有的:

我有 3 个表 atm: 用户(1 对多)Raports(1 对多)ThrashType

报告类:

ThrashType 类:

我想要的是:

  • 创建一个用户可以修改的表单(意味着将另一个 ThrashType 实例附加到一个 Raport,然后将其分配给某个用户)
  • 从存储的记录中重新创建用户制作的表格(还包含有关名称、数量等的信息)
  • 了解有关存储序列化数据或数据库灵感的更多信息
  • 获得更多可以提供帮助的文章或信息来源

我读过的:

我不知道的是:

  • 如何在运行时将 ThrashType 的下一个实例附加到 Raport
  • 在拥有自定义 Raport(具有 1-many ThrashTypes)之后如何存储它:

(我的意思是“哪种方式最好”)

a)在数据库中(稍后将通过我将根据客户所说的内容发明的一组查询对其进行分析)
b)如何将其存储在 SQL 会话状态中

我想做的事:

起初我以为我可以将来自表单的信息存储为一个字符串,以后可以从算法中读取(比如“10101011101”和位置会说出它是字典中的什么样的词),但它仍然缺乏数量。查询字符串数据库的数量似乎是一种过分疯狂的想法。我正在考虑混合会话和数据库 - 用于娱乐丢弃工作的会话和用于存储可以分析的现成报告的数据库。无论如何,我需要你的意见和灵感,因为它正在温柔地杀死我。

即使是这个问题的一部分的答案也将是非常需要和非常有用的帮助。

谢谢!

0 投票
1 回答
337 浏览

asp.net - ASP.NET 会话状态何时保持

当我在会话中存储一个值并且之后发生一些异常时,会话状态可能不会被持久化。

我发现如果我使用InProc模式,该值会立即持久化,所以如果发生异常,它仍然会被存储。

但是如果我切换到StateServer模式,如果发生异常,该值将不会被持久化。我可以写入会话,从会话中再次读取它,但是在发生异常后,就像我在该请求中对会话状态所做的所有更改都将被丢弃(即不持久)。并且任何未来的请求都将读取会话的“旧”状态。

起初我认为这与在出现异常时未发送会话 cookie 有关,但这种行为发生在已经存在且用户已经持有其标识符的会话中。它也明显不同于InProcto StateServer,虽然这两种方法处理 cookie 的方式相同,但不同之处只是持久层。

会话状态持久性如何工作?在请求生命周期的哪个时间点,更改实际上是持久化的StateServer是否可以强制保持会话状态,因此即使在发生异常后它也会保持不变?

0 投票
2 回答
3479 浏览

asp.net - 无法向会话状态服务器发出会话状态请求。错误代码=0x80072749

我在生产机器上看到错误。该应用程序运行良好一段时间,然后突然没有响应,我通过重新启动 IIS 来修复它。

StateServer 在服务中运行良好,模式是自动的。

下面的字符串是我在 web.config 中使用的:

无法向会话状态服务器发出会话状态请求。详细信息:最后阶段='向状态服务器发送请求',错误代码=0x80072749,传出数据大小=0

异常:

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

0 投票
0 回答
24 浏览

c# - 如果在请求结束后进行操作,.Net 会话(StateServer 模式)不同步

我对这个问题有点沮丧:

我有一个管理一些要下载的文件的网站,因为这些文件非常大,必须在文件夹中组织然后压缩,我构建了一个 Ajax 结构,在后台完成这项工作,当这些文件准备好下载时,这个作业改变了用户会话中对象的状态(bool isReady = true,就这么简单)。

为了实现这一点,当用户点击“下载”时,一个 jquery Post 被发送到一个 API,这个 API 启动“组织者”工作并完成代码(主线程,请求范围的),留下一个后台线程做魔法(太美了哈哈)。

这个“组织者”作业是一个后台线程,通过参数接收 HttpSessionState (HttpContext.Current.Session)。它组织和压缩文件,创建下载链接,最后使用 param 接收到的 HttpSessionState 更改会话中的对象。

当我使用会话“InProc”模式时,这很有效(我很高兴在测试后在生产中部署这种艺术和平)。

但是,当我在生产环境中部署项目时,我的噩梦就开始了,因为我们在这个环境中使用“StateServer”模式。在这些环境中,不会应用更改。

到目前为止,我注意到的是,在 StateServer 中,当更改发生在用户请求结束后(启动线程的线程)时,我在后台线程中所做的每项更改都不会“提交”到会话中。如果我写一个 thread.join() 来等待线程完成,则应用在线程内部所做的更改。

我正在考虑使用数据库来存储这些值,但是,我会失去一些性能:(

0 投票
0 回答
2258 浏览

c# - .NET 状态服务器:无法向会话状态服务器发出会话状态请求

我有一个现有应用程序的问题,所以我创建了一个全新的 MVC 应用程序,除了读取会话状态之外没有其他功能,我也遇到了同样的问题。

使用 web.config 中的这一行:

当应用程序运行并尝试使用会话时,我得到了这个:“无法向会话状态服务器发出会话状态请求。”

完整的错误堆栈和版本信息:

我已经验证了 ASP.NET 状态服务正在运行,验证了注册表数据是否准确,验证了防火墙已完全关闭,因此本地端口不应该被阻止等等。我还能做些什么来验证与状态的连接服务器,可能会发生什么?

我试图重新安装 Framework 4.5,但它已经安装,所以它没有做任何事情。(该应用程序使用框架 4.5,顺便说一句)。
我尝试了使用 aspnet_regiis 的旧建议,但这显然不是更高版本的框架中的选项。我在这里和其他地方看到了几次被问到的问题,但是所有这些问题都通过我已经采取的步骤解决了,所以我不知道从这里去哪里。

感谢任何可以提供帮助的人!

(编辑/补充:我还在注册表中将 AllowRemoteConnection 设置为 1。我验证了该服务似乎正在监听:

0 投票
1 回答
324 浏览

c# - 在不同的远程机器上使用 StateServer 模式时出现问题

我正在尝试使用 ServerServer 模式从另一台远程计算机获取会话我的 web.config 中有以下配置

我已经在远程机器上释放了端口 42424,我将在其中保存会话并启用参数

参数将其保留为 1

当我使用我的应用程序登录时,出现以下错误

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

可能是什么问题呢