Model.A_User UserModel = (Model.A_User)Session["A_User"];
在线上时,会报错 “无法将类型为“Model.A_User”的对象强制转换为类型“Model.A_User”。
具体信息如下:
在 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) 在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) 在 System.Web.UI.Control.OnLoad(EventArgs e) 在 System.Web.UI.Control.LoadRecursive() 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
跟踪调试时,是找不到问题的。
请高手帮忙啊。。。。
恩?这两个难道不是同一个类型?
是同一个类型的。 类的定义如下
[Serializable]
public class A_User
{}
@doo: 你看看是不是你在两个不同命名空间下创建了两个A_User类?
我觉得微软的错误提示不会这么不靠谱。
必然两个东西不是一个东西了.这个是事实.
所以你得研究研究.什么地方变动了.
都给你说了,这个转换不成立还不信它.
能说的详细点吗?
你在不同的地方定义了两个不同的Model.A_User实体?
没有啊。。
是同一个类型的。 类的定义如下
[Serializable]
public class A_User
{}
@doo: 这种肯定是Session["A_User"]中装的类型不一样,你和给Session["A_User"]赋值的地方做个对比。
上线时将bin目录下的所有dll文件都删除,更新后重启IIS试试
是不是定义的一个公共类来引用的啊.
如果不是那么肯定报错!
如果是添加的引用,那么先赋值给obj,在试试转换吧(as is)
因为第一次 Session["A_User"] 为null 而且不知道什么类型 所以 强制类型转换会报错。建议用 as is
Session["A_User"] 确定有值?
判断Session["A_User"]不为null的时候再赋值。
大哥,你直接string转换那个不就行了- -还用去实体定义,这不蛋疼么
Session["A_User"] 你在什么地方赋值的?赋的值是什么?跟踪调试。。
A_User user= new A_User();
Session["A_User"] =user;
A_User UserModel = Session["A_User"] as A_User;
利用as,这个倒是没有试过。其实就是先判断 session里是否为空吧。。但是应该不是空的原因
好像知道什么原因了。在.net中,appcode这个文件夹下的文件更新,就会导致服务器重新编译,导致session丢失。所以会报这个错误。
请高手指教了。
文件更新后不重启IIS ?
.net的东西必须中规中矩的来,颠倒一下步骤都可能出现让人崩溃的问题
@卒子: .net不用重启iis的。