问题标签 [session-state]

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 投票
3 回答
1534 浏览

asp.net - 将 Cookie 用于 Web 会话状态 - 有哪些陷阱?

当涉及到扩展 Web 应用程序时,使用进程内会话状态是有害的(不能很好地与集群一起使用,当服务器回收时会爆炸)。

假设您只需要在会话状态中保留少量信息,那么为此目的使用加密的 cookie 项而不是特定状态服务器/数据库的缺点是什么?

显然,使用 cookie 会产生少量的网络开销,并且显然您是在客户端浏览器/移动设备上启用 cookie 的假设下操作的。

您还可以看到哪些其他陷阱?

对于简单、可扩展和健壮的会话来说,这是一个不错的选择吗?

0 投票
2 回答
592 浏览

.net - 如何跟踪和消除会话滥用?

我很确定过去曾有开发人员严重滥用我们可怜的朋友 ASP.NET 会话状态。Session 很想帮助跟踪请求之间的事情,但只能做这么多!请帮我减轻它的痛苦,让它和我们一起快乐地工作。

有谁知道可以跨多个内存会话监控会话大小的工具?我们目前在负载均衡器上打开了 IP 亲和性,因为会话太大,人们希望将它们保存在内存中。我希望能够监控平均会话大小以及单个会话,哪些应用程序一直在访问它们,以及会话中存储了什么。

现在必须停止这种对会话状态的无情、轻率的滥用。我们可以一起找到答案。

0 投票
3 回答
897 浏览

asp.net - 有没有人尝试为 Amazon SimpleDB 构建 ASP.NET 会话状态提供程序?

如果没有,该服务是否存在任何阻止构建服务的基本限制?

0 投票
6 回答
26495 浏览

c# - 无法连接到 SQL Server 会话数据库

我的 asp.net 应用程序每天都能正常工作。直到上个月,我的网站开始出现 2-3 次 Sqlsession 状态服务器问题,如下所示:

Blockquote System.Web.HttpException 引发了“System.Web.HttpException”类型的异常。在 System.Web.HttpAsyncResult.End() 在 System.Web.SessionState.SessionStateModule.EndAcquireState(IAsyncResult ar) 在 System.Web.HttpApplication.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult ar) ============ ======================================= 异常:System.Web.HttpException 无法连接到 SQL服务器会话数据库。在 System.Web.SessionState.SqlSessionStateStore.ThrowSqlConnectionException(SqlConnection conn, Exception e) 在 System.Web.SessionState.SqlSessionStateStore.SqlStateConnection..ctor(SqlPartitionInfo sqlPartitionInfo) 在 System.Web.SessionState.SqlSessionStateStore.GetConnection(String id, Boolean& usePooling ) 在 System.Web.SessionState.SqlSessionStateStore。在 System.Web.SessionState.SqlSessionStateStore.GetItemExclusive(HttpContext 上下文,字符串 id,Boolean& 锁定,TimeSpan& lockAge,Object& lockId,SessionStateActions& actionFlags)在 System.Web.SessionState.SessionStateModule.GetSessionStateItem() 在 System.Web.SessionState.SessionStateModule.PollLockedSessionCallback(对象状态)====================== ============================= 异常:System.InvalidOperationException 超时已过期。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用中并且达到了最大池大小。在 System.Data.ProviderBase。

然后我开始查看我的会话数据库服务器并在我的 sql 客户端中执行“exec sp_who”,结果中发现了很多 AspState 操作记录。

我不知道是什么导致了这种问题,因为我们在应用程序中没有改变任何严重的事情,只是修复了一些错误。

以下是我的 Web 应用程序环境的详细信息:

asp.net 3.5(从 1.1 转换)...在 2 个服务器场中运行良好,会话状态为 sqlmode。

有没有人知道这个问题或有任何调查的想法?谢谢

0 投票
7 回答
8311 浏览

asp.net - 在 ASP.NET 中,您如何处理会话和多个选项卡?

我在 ASP.net 中编写了一个应用程序,旨在让用户将记录添加到数据库中。页面设置当用户添加记录时,在session中设置新添加记录的ID号,页面Response.Redirects到一个“Thank you for submit”页面,然后重定向回原来的页面允许进一步的编辑。用户还可以使用此屏幕上的返回按钮返回到原始记录添加页面,这允许他们对数据进行编辑。

但是,我发现将 ID 存储在会话中并不是一个非常好的解决方案,因为用户可能会尝试在不同的选项卡或窗口中创建两个文档。我也尝试在文字控件中设置 ID,但这会导致问题,即当用户使用后退按钮时,文字控件未设置为 ID,并且会添加新记录而不是编辑记录。

有什么解决方案吗?

0 投票
5 回答
12076 浏览

c# - 我可以在外部 DLL 中使用 ASP.NET Session[] 变量吗

我有两个项目,一个包含我所有的逻辑和数据访问内容的 DLL 项目,以及一个完成我的表单等的 ASP.NET 项目。

我有点困惑。我想如果我将 System.Web 命名空间引用添加到 DLL 项目中,我将能够引用 ASP.NET 页面的会话状态信息。

我可以使用每个页面来获取会话信息并将其传递给 DLL 进行处理,但我希望能够直接从 DLL 类处理事物。

这可能吗?

我已经摆弄了 System.Web 命名空间,并且似乎能够获得对 Session 变量的引用。

谢谢大家。

乔恩

0 投票
7 回答
48289 浏览

asp.net - “HttpContext.Current.Session”与 Global.asax “this.Session”

最近,在为工作中的 ASP.NET 项目编写一些代码时。我们需要一个跟踪工具来获取用户活动的基本指标(页面点击计数等),我们将跟踪它们,然后通过inSession将数据保存到 DB 。Session_EndGlobal.asax

我开始破解,初始代码运行良好,在每个页面加载时更新数据库。我想在每个请求上删除这个数据库命中,只是依靠Session_End存储所有数据。

所有跟踪代码都封装在Tracker类中,包括本质上包装会话变量的属性。

问题 是当我Tracker.Log()Session_End方法中执行时HttpContext.Current.Session,Tracker 代码中的NullReferenceException. 现在,这是有道理的,因为HttpContext总是与当前请求相关,当然在 中Session_End,没有请求。

我知道它Global.asax有一个Session属性,它返回一个HttpSessionState实际上似乎工作正常的属性(我最终将它注入到跟踪器中)..

但我很好奇,我怎么能从外部获得对所HttpSessionState使用对象的相同引用?Global.asaxGlobal.asax

在此先感谢各位,感谢您的意见。:)

0 投票
7 回答
2883 浏览

asp.net - 为会话值的键名创建一个枚举是个好主意吗?

而不是做

是在做

会更好?

0 投票
5 回答
9363 浏览

asp.net - 扩展 ASP.NET 会话状态服务器

设想:

该网站托管在三台服务器上,每台服务器都使用IIS

所有三台服务器都使用 Windows Server 2003 附带的网络负载平衡软件进行集群。

所有三个站点都配置为将会话状态存储在已指定为“状态服务器”的单独服务器上。

我被要求扩大“状态服务器”。有没有一种方法可以让我拥有多个状态服务器并在它们之间同步状态,因此如果其中一个状态服务器出现故障,其他状态服务器将能够提供状态信息?

0 投票
3 回答
531 浏览

asp.net - 会话状态删除和增加开销

以下是我通常如何处理会话状态中的对象,我有一个 const 字符串作为会话名称,然后有一个属性,其中包含对象的获取和设置。

我想知道是否有必要调用“Session.Remove()”(以保持事物干净整洁),以及是否存在大量开销并执行此删除。

我有 Session.Remove 基本上是因为它让我感觉更好(我知道强迫症),让我觉得会话更干净,但我想知道它是否不需要。

根据以下答案编辑 我已将我的属性更改为以下内容:

谢谢!