ASHXハンドラーを使用していますが、ハンドラーにSession!=nullかどうかを確認してもらいたいです。
if (context.Session["Username"] != null)
そして、私はこの行を指しているこのエラーを受け取ります:
System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。
どうしたの?
ASHXハンドラーを使用していますが、ハンドラーにSession!=nullかどうかを確認してもらいたいです。
if (context.Session["Username"] != null)
そして、私はこの行を指しているこのエラーを受け取ります:
System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。
どうしたの?
if (context.Session["Username"] != null)
ハンドラーは実装していますIRequiresSessionState
か?そうしないと、セッションが利用できない場合があります。
MSDNから:
ターゲットHTTPハンドラーがセッション状態値への読み取りおよび書き込みアクセスを必要とすることを指定します。これはマーカーインターフェイスであり、メソッドはありません。
このように使用してください。カプセル化オブジェクトの1つがすでにnullになっている可能性があります。
if (context != null)
if (context.Session != null)
if (context.Session["Username"] != null) {
// Do stuff
}
ええ、最初にコンテキストがnullでないかどうかを確認してください。
.ashxファイルでも同様の問題が発生しました。解決策は、ハンドラーがIReadOnlySessionState(読み取り専用アクセスの場合)またはIRequiresSessionState(読み取り/書き込みアクセスの場合)を実装する必要があることでした。例えば:
public class myModule: IHttpHandler, IRequiresSessionState { ... }
これらのインターフェースは追加のコードを必要としませんが、フレームワークのマーカーとして機能します。
これがお役に立てば幸いです。
ジョナサン