我正在使用ASHX处理程序,我希望处理程序检查Session!= null。
if (context.Session["Username"] != null)
我得到这个错误指向这一行:
System.NullReferenceException:未将对象引用设置为对象的实例。
有什么问题?
答案 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 { ... }
这些接口不需要任何其他代码,但可以作为框架的标记。
希望这会有所帮助。
乔纳森