![](/img/trans.png)
[英]I get System.InvalidCastException, when retrieving a dictionary from Session state
[英]InvalidCastException exception when reading from session state
当我在Visual Studio 2013中调试网站项目时,尝试将Session项目转换为特定类型(ZZZZ)时遇到问题。
return (ZZZZ) Session["SessionItem"];
引发InvalidCastException并显示以下内容
App_Code.axv-bzrg.dll中发生类型'System.InvalidCastException'的异常,但未在用户代码中处理。其他信息:无法将类型为'XXX.YYYY.ZZZZ'的对象转换为类型为'XXX.YYYY.ZZZZ' 。
我添加了一个手表项目
(WebUser) Session["LoggedInUser"]
手表的“价值”部分显示以下内容:
“ App_Code.axv-bzrg.dll”和“ App_Code.ys_ymegf.dll”中都存在类型“ XXX.YYYY.ZZZZ”
我导航到Temporary ASP.NET Files文件夹
C:\\ Users _________ \\ AppData \\ Local \\ Temp \\ Temporary ASP.NET Files \\ root \\ dc8aa7ce \\ b2661c39
并且两个DLL文件都在其中。 我认为App_Code DLL是在每个页面请求上生成的,但是先前的DLL没有被删除,从而导致Temp目录中存在两种重复的类型。 为什么会发生这种情况,我该如何解决呢?
这是某种预期的行为。
您导航到页面第一次-对象添加到会话状态,类型为page_V1.dll:MyType
。
您决定触摸页面的源以修复问题-因为它不会杀死会话cookie,因此再次导航到同一页面将尝试从内存会话状态中获取对象(会话状态不会丢失,因为应用程序池不会因为仅重启而重新启动)页面更改)。 此时,您的页面再次被编译,现在尝试将会话中存储的类型page_v2.dll:MyType
为新的类型page_v2.dll:MyType
,由于类型彼此不相关(即使它们彼此相同),的确会失败。
固定:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.