如题,今天遇到了将ASP.NET MVC1 升级到 MVC2 后,在非Page类中的Session状态会丢失,导致取不到Session数据情况,网上找了很多的文章,有些大道理讲得比较多,看着乱,下面直接献上解决方法,以方便快速解决。
第一步:Webservice 配置
将 sessionState 模式将普通的 InProc 模式改为 StateServer 模式,如下
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="30000" stateNetworkTimeout="144000"
/>
第二步:启动 SessionState Service服务
从系统服务中(开始 -> 程序 -> 管理工具 -> 服务)找到“ASP.NET 状态服务”,然后将服务启动。
第三步:修改 Global.aspx.cs
protected void Session_Start(Object sender, EventArgs e)
{
Session.Timeout = 30000;
}
解决好了,OK了,试试吧!
第三步,其实也可以不操作,关系不大,这是很不容易找到的一篇文章,在此贴出来
http://www.jbxue.com/article/8847.html
另外,如果还存在类似情况,那在以上基础上,在Controller或Class中,加入以下引用:
using System.Web.SessionState;
然后为引用到Session的Controller或Class添加 IRequiresSessionState 继承
public class IndexController : Controller, IRequiresSessionState
或
public class SessionModel : IRequiresSessionState