我正在使用 ASHX 处理程序,我希望处理程序检查会话是否!= null。
if (context.Session["Username"] != null)
我得到这个错误指向这一行:
System.NullReferenceException:对象引用未设置为对象的实例。
有什么问题?
我正在使用 ASHX 处理程序,我希望处理程序检查会话是否!= null。
if (context.Session["Username"] != null)
我得到这个错误指向这一行:
System.NullReferenceException:对象引用未设置为对象的实例。
有什么问题?
if (context.Session["Username"] != null)
你的处理程序实现了IRequiresSessionState
吗?否则会话可能不可用。
来自MSDN:
指定目标 HTTP 处理程序需要对会话状态值进行读写访问。这是一个标记接口,没有方法。
像这样使用它。封装对象之一可能已经为空:
if (context != null)
if (context.Session != null)
if (context.Session["Username"] != null) {
// Do stuff
}
是的,我会说首先检查上下文是否不为空。
我对 .ashx 文件也有类似的问题。解决方案是处理程序必须实现 IReadOnlySessionState(用于只读访问)或 IRequiresSessionState(用于读写访问)。例如:
public class myModule: IHttpHandler, IRequiresSessionState { ... }
这些接口不需要任何额外的代码,而是作为框架的标记。
希望这会有所帮助。
乔纳森