无法使会话变量正常工作,我已经尝试了我可以在网上找到的所有解决方案。
在第1页,我在c#模型中调用以下内容
HttpContext.Current.Session["lol1"] = "123";
稍后我使用ajax调用在c#模型中将此会话变量返回给我,
return HttpContext.Current.Session["lol1"].ToString();
在javascript中,我在ajax成功函数中将其取出并将其放入带警报(e)的警告框中;
我得到一个空对象引用错误。好像我的变量没有保存到会话中。这一切都可以通过调试在localhost上正常工作,包括警报。
我尝试过的事情(目前设定):
-DefaultAppPool设置最大工作进程数:1
-IIS manager-> ASP-> Services->会话属性 - >启用会话状态:true
-IIS manager->会话状态 - >正在进行中
- 在我的解决方案web.config中:
<system.web>
<sessionState mode="InProc" timeout="25"></sessionState>
</system.web>
<system.webServer>
<modules>
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule"/>
</modules>
</system.webServer>
答案 0 :(得分:0)
尝试在控制器中设置SessionStateBehavior
。例如:
[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
如果您只需要从ReadOnly
读取而不是写入以防止阻止,建议使用Session
。
链接到Microsoft的SessionStateBehavior enumeration。
(有关ASP.NET在控制器使用可写会话时阻止的更多信息,请参阅此链接:Does Session State read/write everything when you access with DynamoDB)
希望这有帮助!
此致
罗斯