c# - 使用 "as"转换对象仍然给出错误

标签 c# asp.net

我有一个对象 MyObject,我将其存储在 session 中。

我这样写:

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

我收到错误对象引用未设置到对象的实例为什么?我认为如果您使用 as 进行转换并且转换产生错误,那么它只会返回 null 并继续执行。我应该如何重写这一行?

感谢您的建议。

PS:产生错误是因为我删除了启用 session 行[WebMethod(EnableSession = true)]我会将该行放回原处,但我想确保没有异常万一出现问题。

最佳答案

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

是的,你是对的,as将尝试进行强制转换或导致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 元素引用键变得不可能。

关于c# - 使用 "as"转换对象仍然给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11674954/

相关文章:

c# - 如何通过 xamarin.forms 使用 Visual Studio for Mac 中的 iOS 模拟器/Android 模拟器

c# - 为什么我们不能在 if 语句中定义变量?

c# - 同一台服务器上的多个 .NET 版本

asp.net - 使用另一种身份验证方法进行外部 api 调用

c# - '/' 应用程序中的服务器错误

c# - 如何将 DateTimePicker 值设置为今天的日期+1

秒表和 foreach 循环的 C# *奇怪* 问题

asp.net - 移植到 ASP .Net

asp.net - 需要测试ajax超时条件

c# - 无法更改目标框架?