Csharp/C#教程:C#无法检查Session是否存在?分享


C#无法检查Session是否存在?

当我执行以下操作时出现错误:

if(Session["value"] != null) { // code } 

我得到的错误是这样的:

你调用的对象是空的。

为什么是这样? 我总是这样检查我的会话? 我正在使用MVC框架,这与它有关吗?

编辑:

代码位于Controller的构造函数中:

 public class MyController : ControllerBase { private int mVar; public MyController() { if (Session["value"] != null) { mVar= (int)Session["value"]; } } } 

会话仅在处理动作期间存在 – 我不希望它在控制器的构造函数中有效。 例如,控制器可能(据我所知)在请求之间重用。

您需要在动作(方法)中执行此操作,或者(可能更恰当地)在动作filter或OnActionExecuting (etc)方法中执行此操作:

 public abstract class ControllerBase : Controller { protected override void OnActionExecuting( ActionExecutingContext filterContext) { // code involving this.Session // edited to simplify base.OnActionExecuting(filterContext); // re-added in edit } } 

[]是一个索引器,它就像一个类的方法。

在这种情况下,Session为null,您无法对其执行索引。

做这个:

 if(Session != null && Session["value"] != null) { // code } 

你必须这样做 –

 if(null != HttpContext.Current.Session["Value"]) { //Code here. } 

您收到此错误,因为“Session”对象为null。 因此,不可能看到它的[“值”]位。 我不熟悉MVC,但要么没有创建Session对象,要么是在生命周期的错误点访问它,或者你只是需要一个测试来检查Session!=空值。

您使用的语法:

 if (Session["mySessionVariable"] != null) { } 

…是在ASP.NET中检查Session对象的正确方法。 我怀疑问题是因为您使用的是ASP.NET MVC。

也许我们的一些MVC专家可以启发我们在ASP.NET MVC中执行此操作的正确方法。

编辑:我看到Marc Gravell在我输入时发布了他的答案。 这应该是有启发性的。

我通过这种方式解决:

 if (Session.Count > 0 && Session["mySessionVariable"].ToString() != null) { } 

 if(Session != null && Session["name"] != null && Session["name"].ToString()!="") { //fire code } 

你也可以使用:

上述就是C#学习教程:C#无法检查Session是否存在?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 if (Session == null || String.IsNullOrEmpty((string)Session["session_object"])){ // Do something } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1017178.html

(0)
上一篇 2022年1月1日
下一篇 2022年1月1日

精彩推荐