如何在应用间传递Session值?(InProc模式)

跨项目Session共享问题
讨论了在Asp.Net项目CM和SpecialCM之间共享Session的问题,当从CM项目的登录页面跳转到SpecialCM项目页面时,Session[userID]无法正确读取,出现对象引用未设置到对象实例的错误。

项目结构是这样的,
unicomSln.JPG
CM 和 SpecialCM 都是Asp.Net项目,在项目CM中有一个Login.aspx登录页面,登录成功后,在Session["userID"]中存入当前登录的用户名,并Redirect到项目SpecialCM下的一个页面中,但在该页面的Page_Load事件中,执行以下语句时出错:
string userName = (string)Session["userID"];
错误为:未能对象引用设置到对象的实例。
现在正在查找项目(也即WEB应用间)共享Session的资料,不知你们是否也曾遇到过这样的问题,如何解决的呢?

转载于:https://www.cnblogs.com/keynuo/archive/2004/06/04/13402.html

在C# MVC(Model-View-Controller)架构中,启用会话(Session)通常是在Web应用程序中为了保持用户状态或共享数据而设置的。以下是启用Session的基本步骤: 1. **打开配置文件**: 打开`web.config`文件,这是ASP.NET应用程序的主要配置文件。 2. **添加SessionState元素**: 在`<configuration>`标签下找到`<system.web>`部分,然后添加或修改`<sessionState>`节点。例如,你可以添加以下内容: ```xml <system.web> <!-- 其他配置... --> <sessionState mode="InProc" cookieless="false" timeout="20"> <stateConnectionString connectionString="Server=your_server;Database=session_db;Trusted_Connection=True;" /> </sessionState> </system.web> ``` `mode="InProc"`表示将会话存储在服务器内存中,也可以选择其他模式如`StateServer`或`SQLServer`。 3. **启用状态管理**: 确保`<sessionState>`标签内的`cookieless`属性设为`false`,这意味着浏览器将会发送一个名为`ASP.NET_SessionId`的Cookie来标识当前的会话。如果设置为`true`,可以考虑使用URL查询字符串传递会话ID。 4. **在控制器中使用Session**: 在你的控制器代码中,你可以通过`HttpContext.Session`访问会话对象,例如存储或检索数据: ```csharp public class HomeController : Controller { private void StoreData(string key, string value) { HttpContext.Session.SetString(key, value); } private string GetData(string key) { return HttpContext.Session.GetString(key); } // 示例动作方法 public ActionResult Index() { string storedValue = GetData("exampleKey"); // 如果会话中存在,则获取 //... } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值