2

我有一个对象 MyObject 并将其存储在会话中。

我写这个:

MyObject TheObject = HttpContext.Current.Session["TheObjInSession"] as MyObject;

我收到错误Object reference not set to an instance of an object为什么?我认为,如果您使用asto 强制转换并且强制转换产生错误,那么它只会返回 null 并继续执行。我应该如何重写这一行?

感谢您的建议。

PS:产生错误是因为我删除了启用会话行[WebMethod(EnableSession = true)],我将把该行放回去,但我想确保没有异常,以防出现任何问题。

4

1 回答 1

4

可能Session是触发它(它不存在或尚未建立)。如果您没有将类标记为管理会话,这在处理程序中很常见。

是的,你是对的,as将尝试强制转换或导致 a null,但这只是假设你是左手对象是有效的并且具有尝试强制转换的值。

为了更深入地解释它:

HttpContext.Current.Session["Foo"]
HttpContext                         Probably fine
HttpContext.Current                 May not exist
HttpContext.Current.Session         Most likely cause (no access to session)

如果元素本身不存在,这实质上使得引用Session元素的键是不可能的。Session

于 2012-07-26T17:44:51.110 回答