【发布时间】:2015-05-28 06:22:10
【问题描述】:
当我在 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"]
手表的Value部分显示如下:
类型 'XXX.YYYY.ZZZZ' 存在于 'App_Code.axv-bzrg.dll' 和 'App_Code.ys_ymegf.dll'
我导航到 Temporary ASP.NET Files 文件夹
C:\Users_________\AppData\Local\Temp\Temporary ASP.NET 文件\root\dc8aa7ce\b2661c39
其中有两个 DLL 文件。我认为 App_Code DLL 是在每个页面请求上生成的,但之前的那些没有被删除,导致 Temp 目录中有两个重复的类型。为什么会发生这种情况,我该如何解决这个问题?
【问题讨论】:
-
停止 IIS 并清除所有 \Temporary ASP.NET Files\ 通常可以修复它。很少有清理/重建修复它。
-
你是对的,但我不能每次都停止 IIS 或重建(无法调试)。此外,删除临时文件是可能的,但非常烦人且效率低下。另外,我没有这个项目的清洁选项。猜猜为什么会这样?
-
清洁解决方案应该在上下文菜单中。 Clean 重新编译所有内容,包括 Visual Studio 认为不需要重新编译的内容。已经有一段时间了,但有时当动态编译器不喜欢您在标记中设置指令的方式时会发生这种情况。另一个更激进的解决方案是从 WebSite 切换到 WebApplication,它具有更可预测的编译/不那么古怪,尤其是随着项目规模越来越大。