首页 新闻 会员 周边 捐助

读取session时,强制转换的问题

0
悬赏园豆:60 [已关闭问题] 关闭于 2012-09-14 13:56

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)

 

跟踪调试时,是找不到问题的。

 

请高手帮忙啊。。。。

doo的主页 doo | 初学一级 | 园豆:8
提问于:2012-01-29 13:34
< >
分享
所有回答(12)
0

恩?这两个难道不是同一个类型?

顾晓北 | 园豆:10898 (专家六级) | 2012-01-29 14:52

是同一个类型的。  类的定义如下

[Serializable]
    public class A_User
    {}

支持(0) 反对(0) doo | 园豆:8 (初学一级) | 2012-01-29 15:58

@doo: 你看看是不是你在两个不同命名空间下创建了两个A_User类?

我觉得微软的错误提示不会这么不靠谱。

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2012-01-29 16:51

必然两个东西不是一个东西了.这个是事实.

所以你得研究研究.什么地方变动了.

支持(0) 反对(0) [秦时明月] | 园豆:738 (小虾三级) | 2012-01-30 08:48
0

都给你说了,这个转换不成立还不信它.

[秦时明月] | 园豆:738 (小虾三级) | 2012-01-29 15:14

能说的详细点吗?

支持(0) 反对(0) doo | 园豆:8 (初学一级) | 2012-01-29 16:01
0

你在不同的地方定义了两个不同的Model.A_User实体?

LCM | 园豆:6876 (大侠五级) | 2012-01-29 15:31

没有啊。。

 

是同一个类型的。  类的定义如下

[Serializable]
    public class A_User
    {}

支持(0) 反对(0) doo | 园豆:8 (初学一级) | 2012-01-29 15:58

@doo: 这种肯定是Session["A_User"]中装的类型不一样,你和给Session["A_User"]赋值的地方做个对比。

支持(0) 反对(0) LCM | 园豆:6876 (大侠五级) | 2012-01-29 17:05
0

上线时将bin目录下的所有dll文件都删除,更新后重启IIS试试

az235 | 园豆:8483 (大侠五级) | 2012-01-29 21:05
0

是不是定义的一个公共类来引用的啊.

如果不是那么肯定报错!

如果是添加的引用,那么先赋值给obj,在试试转换吧(as is)

yziPad | 园豆:180 (初学一级) | 2012-01-30 10:42
0

因为第一次 Session["A_User"] 为null 而且不知道什么类型 所以 强制类型转换会报错。建议用  as is

慧☆星 | 园豆:5722 (大侠五级) | 2012-01-30 11:46
0

Session["A_User"] 确定有值?

PEPE YU | 园豆:29 (初学一级) | 2012-01-30 13:13
0

判断Session["A_User"]不为null的时候再赋值。

李班头 | 园豆:205 (菜鸟二级) | 2012-01-30 15:32
0

大哥,你直接string转换那个不就行了- -还用去实体定义,这不蛋疼么

咆哮的野猪 | 园豆:60 (初学一级) | 2012-02-01 10:45
0

Session["A_User"] 你在什么地方赋值的?赋的值是什么?跟踪调试。。

Rookier | 园豆:652 (小虾三级) | 2012-02-01 17:30
0

A_User   user= new A_User();

Session["A_User"] =user;

A_User UserModel = Session["A_User"] as A_User;

凉风ing | 园豆:332 (菜鸟二级) | 2012-02-08 17:43

利用as,这个倒是没有试过。其实就是先判断 session里是否为空吧。。但是应该不是空的原因

支持(0) 反对(0) doo | 园豆:8 (初学一级) | 2012-02-10 10:48
0

好像知道什么原因了。在.net中,appcode这个文件夹下的文件更新,就会导致服务器重新编译,导致session丢失。所以会报这个错误。

 

请高手指教了。

doo | 园豆:8 (初学一级) | 2012-02-15 11:15

文件更新后不重启IIS ?

.net的东西必须中规中矩的来,颠倒一下步骤都可能出现让人崩溃的问题

支持(0) 反对(0) 卒子 | 园豆:588 (小虾三级) | 2012-02-15 13:31

@卒子: .net不用重启iis的。

支持(0) 反对(0) doo | 园豆:8 (初学一级) | 2012-02-16 12:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册