Unb*_*ble 6 c# asp.net asp.net-mvc asp.net-mvc-5
我有一个ASP.Net MVC - 5应用程序,我想在访问它之前检查会话值是否为null.但我无法这样做.
//Set
System.Web.HttpContext.Current.Session["TenantSessionId"] = user.SessionID;
// Access
int TenantSessionId = (int)System.Web.HttpContext.Current.Session["TenantSessionId"];
Run Code Online (Sandbox Code Playgroud)
我从SO尝试了很多解决方案
尝试
if (!string.IsNullOrEmpty(Session["TenantSessionId"] as string))
{
//The code
}
Run Code Online (Sandbox Code Playgroud)
请指导我.
错误:NULL引用
Ahm*_*med 12
if(Session["TenantSessionId"] != null)
{
// cast it and use it
// The code
}
Run Code Online (Sandbox Code Playgroud)
NullReferenceException 来自尝试强制转换 null 值。一般来说,您通常最好使用as而不是直接转换:
var tenantSessionId = Session["TenantSessionId"] as int?;
Run Code Online (Sandbox Code Playgroud)
那永远不会引发异常。如果未设置会话变量,则 的值tenantSessionId将仅为 null。如果您有默认值,则可以使用空合并运算符来确保始终存在某个值:
var tenantSessionId = Session["TenantSessionId"] as int? ?? defaultValue;
Run Code Online (Sandbox Code Playgroud)
然后,它将是会话中的值或默认值,即永远不为空。
您也可以直接检查会话变量是否为空:
if (Session["TenantSessionId"] != null)
{
// do something with session variable
}
Run Code Online (Sandbox Code Playgroud)
但是,您需要将会话变量的所有工作限制在该条件内。
[]作为一个索引(如在类中的方法),并在这种情况下,session是null你不能在其上执行索引。
尝试这个..
if(Session != null && Session["TenantSessionId"] != null)
{
// code
}
Run Code Online (Sandbox Code Playgroud)