试着整天打猎。
如果我使用" StateSever"我可以让会话开始工作。保持从控制器到控制器和刷新的会话。如果我使用" InProc"会话从控制器到控制器,但在刷新时它会死掉[null]。超时不应该是一个问题,因为我立即运行它。
对此有任何帮助表示赞赏。我真的不想使用状态服务器......至少在我理解为什么会发生这种情况之前。
网络配置
<!--<sessionState cookieless="UseCookies" timeout="1440" mode="InProc"/>-->
<sessionState cookieless="UseCookies" timeout="1440" mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"/>
控制器
public ActionResult Login()
{
System.Web.HttpContext.Current.Session["SessionVal"] = "Test";
return View();
}
public ActionResult LoginSuccess()
{
return View();
}
浏览
@{
Layout = "";
}
<h2>Login</h2>
<a href="/Login/LoginSuccess">Go Here</a>
第二视图
@{
Layout = null;
}
Session: @Session["SessionVal"]
答案 0 :(得分:2)
我在web配置中禁用了会话状态。我把日期时间放在了 session我第一次运行项目时会显示会话。一世 点击F5然后重拍会话。我继续击中F5并持续下去。 我启用了stateserver并执行相同的过程,但它从未重新创建过 第一次刷新会议。
默认情况下,sessionState为 InProc 模式。 InProc 表示会话存储在Web服务器的内存中。 如果在Visual Studio中进行调试,它将是您本地计算机的内存。
由于内存不是持久存储,因此只要应用程序停止,就会通过垃圾收集器清除sessionState。
底线是它是设计,你无能为力。
如果您希望在应用程序停止后仍保持sessionState,则需要使用 StateServer 或 SQLServer 。
答案 1 :(得分:1)
InProc字面意思是正在进行中。它与正在运行的过程一起生存和死亡。 IIS Express是一个一次性服务器 - 非常字面。由于各种原因,Visual Studio始终启动和停止IIS Express。例如,每次停止调试时,默认情况下都会终止IIS Express(尽管可以逐个项目地更改它)。
长和短,即使服务器上有真正的IIS,InProc会话也不稳定。他们在本地开发盒上的IIS Express上更是如此。如果您需要或希望请求之间的会话数据稳定,那么您需要使用InProc以外的其他内容。