当我在Visual Studio 2013中调试我的网站项目时,当我尝试将会话项目转换为特定类型(ZZZZ)时,我遇到了一个问题。
return (ZZZZ) Session["SessionItem"];
使用以下内容抛出InvalidCastException
发生了'System.InvalidCastException'类型的异常 App_Code.axv-bzrg.dll但未在用户代码中处理 附加信息:无法将“XXX.YYYY.ZZZZ”类型的对象强制转换为“XXX.YYYY.ZZZZ”。
我添加了
的观看项目(WebUser) Session["LoggedInUser"]
以下内容显示在手表的值部分:
“App.Code.axv-bzrg.dll”中存在“XXX.YYYY.ZZZZ”类型 'App_Code.ys_ymegf.dll'
我导航到Temporary ASP.NET Files文件夹
C:\ Users _________ \ AppData \ Local \ Temp \ Temporary ASP.NET 文件\根\ dc8aa7ce \ b2661c39
这两个DLL文件就在那里。我认为App_Code DLL是在每个页面请求上生成的,但是前面的请求没有被删除,导致Temp目录中有两个重复的类型。为什么会发生这种情况?我该如何解决这个问题?
答案 0 :(得分:2)
这是一种预期的行为。
您首次导航到页面 - 对象已添加到类型为page_V1.dll:MyType
的会话状态。
您决定触摸页面的来源以修复某些内容 - 因为它不会终止会话Cookie再次导航到同一页面将尝试从内存中会话状态获取对象(会话状态不会丢失,因为应用程序池未重新启动由于只是页面更改)。此时您的页面再次编译,现在尝试将会话中存储的案例类型转换为新类型page_v2.dll:MyType
,因为类型彼此不相关(即使它们完全相同),它们确实会失败。
修复: