System.NullReferenceException检查是否!= null

时间:2011-04-25 00:45:55

标签: c# null handler ashx argumentnullexception

我正在使用ASHX处理程序,我希望处理程序检查Session!= null。

if (context.Session["Username"] != null)

我得到这个错误指向这一行:

  

System.NullReferenceException:未将对象引用设置为对象的实例。

有什么问题?

4 个答案:

答案 0 :(得分:10)

if (context.Session["Username"] != null)

您的处理程序是否实现IRequiresSessionState?否则会话可能无法使用。

来自MSDN

  

指定目标HTTP处理程序   需要读写访问权限   会话状态值。这是一个标记   界面,没有方法。

答案 1 :(得分:4)

像这样使用它。其中一个封装对象可能已经为空:

if (context != null)
  if (context.Session != null)
    if (context.Session["Username"] != null) {
      // Do stuff
}

答案 2 :(得分:1)

是的,我会先检查上下文是否为空。

答案 3 :(得分:0)

我在.ashx文件中遇到了类似的问题。解决方案是处理程序必须实现IReadOnlySessionState(用于只读访问)或IRequiresSessionState(用于读写访问)。例如:

public class myModule: IHttpHandler, IRequiresSessionState { ... }

这些接口不需要任何其他代码,但可以作为框架的标记。

希望这会有所帮助。

乔纳森