繁体   English   中英

c# 如何从 asp.net Z21D6F40CFB511982E5424E0E250A 获取 session

[英]c# How to get session from asp.net session cookie

我对 .net 非常基础

但基本上我被告知要在要部署的环境中为我的网站提供 session 粘性意味着我必须从 cookie ASP.NET_SessionId

但这意味着什么/我该如何使用它?

我在哪里使用我现有的 session 代码,例如Session.Add("Something", something)我现在需要更改它吗?

这是为您自动完成的

您不必自己手动阅读 cookies。 Asp.net 为您完成。 因此,每当您访问Session字典时,您的 session 将已经被保留,如果它存在于您之前的请求中。 如果没有(或过期)它也将自动创建,因此向其中添加项目将使其正常工作。

So basically instead of accessing Session identifier from a cookies and do whatever with it (as you won't be able to access intrinsic session store), just use Session :

Session["SomeKey"] = myVar;
// or
Session.Add("SomeKey", myVar);

和阅读

var o = Session["SomeKey"];

cookies 是强制性的吗?

基本上 Asp.net 支持除 cookies 之外的其他 session ID 存储方式。 如果您愿意,可以启用无 cookie session( web.config文件中的设置)。 Session 标识符将添加到您的 URL 中,例如:

http://www.example.com/(S(lit3py55t21z5v55vlm25s55))/orderform.aspx

在 MSDN 上阅读有关它的更多信息。

默认是什么?

默认情况下 session 标识符保留在 cookies 中。 这意味着您不必更改web.config中的任何内容。 但是,如果您想使用其他方式,则必须在web.config中进行设置(检查与以前相同的上方链接)。

通常我在 ASP.NET 中使用 session 变量的方式是这样的

// set
Session["SessionVariableName"] = localVariable;

// get
localVariable = Session["SessionVariableName"] as LocalType; // then check nulls

任何会话的问题是,如果您不使用 go 进行更改,默认会在进程中存储会话,因此每次 IIS 回收工作进程时,您的 Z21D6F40CFB511982E597ZA 就会丢失。 这可以通过使用内置的 ASP.NET State 服务轻松解决。 快速搜索出现了这篇关于使用它的文章。

您可以通过多种方式获得对当前 session 的引用,但最简单的方法是使用页面上的 session 属性。

请参阅: http://msdn.microsoft.com/en-us/library/system.web.ui.page.session.aspx

// Set
Session["mySession"] = "Hello World";

// Get
var s = Session["mySession"];

Session 粘性不是 ASP.net 的功能,而是可能位于其前面的负载平衡器的功能。 如果您使用InProc会话,则 session 数据存储在服务器的 memory 中。 使用“粘性”会话,负载均衡器会将来自同一源的所有请求(通常基于 IP)发送到同一台服务器,以确保 session 始终存在。

这不是处理 web 场方案的最具可扩展性的方法。 Microsoft 引入了另外两种机制, StateServerSqlServer ,它们用于将 session 数据发送到所有 web 前端的单个位置。

您可能只需要确保在您的配置中没有将cookieless设置为true

不管这一切是如何配置的,您将始终以相同的方式检索您的 session 数据 - ASP.NET 抽象出细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM