ASP.Net MVC-5アプリケーションが1つあり、アクセスする前にセッション値がnullかどうかを確認したいと思います。しかし、私はそうすることができません。
//Set
System.Web.HttpContext.Current.Session["TenantSessionId"] = user.SessionID;
// Access
int TenantSessionId = (int)System.Web.HttpContext.Current.Session["TenantSessionId"];
私はSOから多くの解決策を試しました
試み
if (!string.IsNullOrEmpty(Session["TenantSessionId"] as string))
{
//The code
}
親切に私を導きます。
エラー:NULL参照
if(Session["TenantSessionId"] != null)
{
// cast it and use it
// The code
}
なので - []
はIndexer
(クラスのメソッドと同様)として機能し、この場合、session
はnull
であり、実行できませんIndexingその上に。
これを試して..
if(Session != null && Session["TenantSessionId"] != null)
{
// code
}
NullReferenceExceptionは、null値をキャストしようとしたことが原因です。一般的に、通常はダイレクトキャストの代わりにas
を使用する方がよいでしょう。
var tenantSessionId = Session["TenantSessionId"] as int?;
それは決して例外を発生させません。セッション変数が設定されていない場合、tenantSessionId
の値は単にnullになります。デフォルト値がある場合は、null合体演算子を使用して、常にsome値が存在することを確認できます。
var tenantSessionId = Session["TenantSessionId"] as int? ?? defaultValue;
次に、セッションからの値またはデフォルト値のいずれかになります。つまり、nullになることはありません。
セッション変数が直接nullかどうかを直接確認することもできます。
if (Session["TenantSessionId"] != null)
{
// do something with session variable
}
ただし、すべての作業をセッション変数で制限して、この条件内にする必要があります。
セッションが空/ Nullかどうかを確認します
if(!string.IsNullOrEmpty(Session ["TenantSessionId"] as string)){
//ここにロジックのコードを記述
}
C#MVCバージョン5より前で、セッションが空/ Nullかどうかを確認します。
if (!string.IsNullOrEmpty(Session["TenantSessionId"] as string))
{
//cast it and use it
//business logic
}
C#MVCバージョン5以上で、セッションが空/ Nullかどうかを確認します。
if(Session["TenantSessionId"] != null)
{
//cast it and use it
//business logic
}