Jef*_*den 7 c# .net-4.0 nullreferenceexception visual-studio-debugging visual-studio-2012

为什么VS 2012在显示Type变量时将其显示为NullReferenceException value = "Retailer".

我有一个新生儿,我正在努力限制睡眠,所以如果我在这里遗漏了一些明显的东西,我会道歉.已经实例化了LoggedInUser.Employer对象,并且此行在1/2时间内工作正常.但随后它开始破裂.不确定这是否有帮助 - 需要睡觉......
private string _type;
public string Type
{
get { return _type; }
set
{
if (value != null)
{
TypeEnum = (Constants.BusinessType)Enum.Parse(typeof(Constants.BusinessType), value, true);
_type = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我开始怀疑它是否是一个跨线程的问题......

ExecutionContext负责存储实例的ASP.NETHttpContext.Current不会自然地“流”到其他线程。从错误堆栈跟踪来看,您正在使用 ASP.NET MVC,这是一个抽象了HttpContext. 您可能有 WebForms 背景,直接使用 WebForms 很常见?
这篇文章提供的详细信息超出了我的合理范围。与您的情况最相关的一些要点是:
\n\n“ExecutionContext 都是关于 \xe2\x80\x9cambient\xe2\x80\x9d 信息,这意味着它存储与当前环境或 \xe2\x80\x9ccontext\xe2\x80\x9d 相关的数据,其中你\xe2\x80\ x99 正在运行。”
\n\n这种“环境”信息是......HttpContext.Current及其各种属性(包括Session)。
“这意味着我们\xe2\x80\x99所依赖的用于控制执行细节的环境上下文不再可行,因为TLS不\xe2\x80\x99t\xe2\x80\x9cflow\xe2\x80\x9d跨越这些异步点。”
\n\nTLS 是线程本地存储(HttpContext.Current等等)简而言之,async = 可能会丢失HttpContext.Current。
还记得我说过 MVC 大部分都是抽象的吗HttpContext?
Session在Controller.Session中。(我很遗憾地说,到目前为止,我还没有在异步控制器操作中对此进行测试,因此还无法验证它是否适合您的需求,或者您是否需要额外的工作来使其配合.)
Request在Controller.Request中
User位于Controller.User中
还有其他的...检查一下。
\n\n您考虑过替代方案吗?您不必费力寻找表明 Session + ASP.NET MVC 不是一个好主意的文章。我不会权衡是否是“坏事”这样笼统的问题,但看看你的例子,在我看来,你正在处理用户配置文件数据,而不是“会话”数据。
\n\n会话实际上并不是缓存用户配置文件信息的正确位置。就此而言,缓存它是否合适?用户个人资料在会话期间可以更改吗?如果他们自己改变了,你会重置会话吗?如果单独的管理员用户在登录时更改了他们的个人资料怎么办?
\n\n探索替代方案超出了这个问题的范围,但请注意您可能试图在这里解决错误的问题。
\n| 归档时间: |
|
| 查看次数: |
2338 次 |
| 最近记录: |