问题标签 [state-server]

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 投票
4 回答
550 浏览

asp.net - 管理会话状态

我需要在数据库中维护会话状态。但是我无法直接从 Web 服务器访问数据库。Web 服务器与应用服务器通信,后者又可以访问数据库。
有没有办法配置这个?或者是否必须编写自定义组件。
此设置的原因是允许负载平衡并允许将用户的会话从一台服务器重定向到另一台服务器。

0 投票
1 回答
1766 浏览

.net - 从 .NET 3.0 升级到 3.5:设置为 StateServer 的站点在 Web Garden 中恢复为 InProc

设想:

以运行 .NET 3.0 的服务器和在启用了 Web 园的应用程序池中运行的 ASP.NET 网站为例(进程数:3)。web.config 配置如下:

现在将机器升级到 .NET 3.5 SP1。重新启动服务器。结果:会话不再跨 w3wp.exe 实例维护,好像所有会话都已恢复到 InProc。当前的解决方法是减少到 1 个工作进程。

奇怪的是:不同服务器上的相同代码没有问题。我以前遇到过这个问题,但重启后它神奇地消失了。我已经重新启动了一次,但到目前为止没有任何乐趣。

比较两台服务器的两个 machine.configs 和 web.configs:完全相同。

其他人遇到过这个问题,但那里没有答案。

有任何想法吗?我真的被这个难住了。

0 投票
6 回答
4514 浏览

.net - 在两个 .net 应用程序之间共享“会话状态”类型数据的最佳方式

我们有一个 Web 应用程序,开始时很小,添加的任何新功能都只是作为同一个项目的一部分,但是现在我们想为这些插件创建新项目......

我们创建了一个新项目,它继承了主项目的 global.asax,并且还可以访问主项目的 web.config,但是,在全局 asax 代码中有会话检查数据完整性,以查看用户是否已登录..这是我们遇到问题的地方..用户已登录,但站点错误指出他们未登录,因为插件项目无法访问由主项目设置的会话用户 ID。

目前我们没有使用会话状态服务器或 sql 状态服务器,我们希望避免使用它以避免对一些旧代码造成任何麻烦。

我们也不想走互斥锁的路线..如果可以的话,我们也想远离 Windows 编码......

会话发生的情况的站点概述:用户使用 asp 代码(.net 1.1 代码)登录 用户经过身份验证并成功登录,将该用户的 guid 发送到数据库,主项目(.net 2.0 代码)抓住它guid,获取用户数据并将用户 ID 存储在会话中。任何需要知道用户是谁的页面,都从 session("userid")

所以:我们创建另一个继承 global.asax 的项目,可以访问 web.config - 完成!

我们想要在此之上做的:让这个新项目包含一个页面(来自主项目的插件功能)让这个页面访问从主项目设置的会话(“userid”)。- 不知道该怎么做...

0 投票
3 回答
2665 浏览

asp.net - ASP.NET网站使用状态服务器时如何避免单点故障

在我当前的项目中,我们必须创建一个网站(ASP.NET MVC),它可能有足够的负载来要求一个服务器场。我知道如果使用服务器场,会话状态必须存储在其他地方,例如 SQL 服务器数据库或状态服务器。

经过一些实验,我们倾向于使用状态服务器机制,但它会出现单点故障,这让我很紧张。使用状态服务器时,有什么方法可以避免“单点故障”?

0 投票
3 回答
1668 浏览

asp.net - W3WP (IIS) 进程回收时保留 ASP.NET InProc 会话

我知道所有 InProc 会话数据在其 w3wp 所有者进程回收时总是消失,因为它只驻留在 w3wp 内存中。

我想知道是否可以在进程外部的某个地方发生回收时缓存会话数据,然后在会话恢复时重新注入(并重建)会话。这样我就可以在必要时获得 InProc 的速度以及类似状态服务器的外部化的可靠性。这可能吗?

0 投票
1 回答
1244 浏览

asp.net-mvc - ASP.Net State Server 是一个优雅的解决方案吗?

我们有一个 ASP.Net MVC 项目,该项目将从单个 Web 服务器开始,但可能很快会扩展到一个小型 Web 场。由于 ASP.Net 身份验证存储了一个用户 ID,并且数据缓存也可能很有用,我们可能需要尽快跳转到状态服务器。

我想听听其他人如何使用 State Server 以及它如何从性能角度进行扩展。

或者,我们可以通过不使用数据缓存和使用加密 cookie 跟踪会话来将其构建为完全无状态的。

更新:我之前有一些错误信息(来自 Microsoft 技术顾问......),Auth 不像我想的那样存储在会话中,它只是存储在 cookie 中。所以,在这种情况下,我们毕竟不需要状态服务器。

0 投票
0 回答
605 浏览

c# - 序列化所有类型的对象以将会话存储在状态服务器或 sql 服务器中

我有一个带有 ASP.NET Web 表单的 Web 应用程序,我想将 session 存储在 state server 或 SQL server 中,在这些情况下,我的类必须被序列化,但我有一些不可序列化的字段或类(如 IIdentity)。最好的方法是什么?

我尝试ISurrogateSelector了接口并实现了两种方法(GetObjectData, SetOPbjectData),它可以工作,但可能存在太多不可序列化的对象,我想要一种通用的方法来做到这一点。

0 投票
1 回答
2156 浏览

c# - 使用 XmlDocument 属性序列化对象

我有很多类,其中包含一些类型的字段和属性XmlDocument。当我把这些类的对象放在会话中时(比如状态服务器、SQL 状态服务器),就需要对它们进行序列化。但是如果我们有一个 XmlDocument 类型的属性并 [Serialize]在我们的类上方添加 Attribute ,就会出现以下错误。

无法序列化会话状态。在“StateServer”和“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许不可序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“自定义”模式下完成类似的序列化,则适用相同的限制。

[NonSerialize]对于具有属性的字段,不会出现此错误。属性不能具有属性[NonSerialize],因为它只能用于类和结构以及事件和委托。