【发布时间】:2012-10-08 00:51:55
【问题描述】:
序言:我在旧环境 ASP.NET/.NET 2.0 中工作,没有 Visual Studio。目前记事本++和FTP。虽然不太理想,但这是我目前处理的手牌。我目前无法直接/直接控制 IIS 实例或服务器机器。
我在会话中存储了一个Foo 类型的对象:
this.Session["foo"] = new Foo();
this.Response.Redirect("the/second/page");
在第二页上,我从会话中检索,并尝试将其转换为使用:
Foo foo = (Foo) this.Session["foo"];
我收到了:
System.InvalidCastException: Unable to cast object of type 'Foo' to type 'Foo'.
当我在第二页通过.GetType() 比较类型名称时:
Foo in session: ASP._dev_blah_aspx+Foo
New instance of Foo: ASP._dev_blah_aspx+Foo
但是他们通过.GetType().GUID 的类型GUID 是不同的:
Foo in session: a67f218d-...
New instance of Foo: 267f20ea-...
这可能与question/answer 有关吗?我会尝试,但请参阅序言。
【问题讨论】:
-
你的班级住在哪里?是在 App_Code 文件夹中,还是在页面上定义的?
-
在页面上定义,脚本块;所以嵌套类。
-
Foo 是否标记为序列化?
-
@StefanP 不,但我认为序列化只对在其他地方持续存在的会话对象很重要。我只是使用本机会话存储实现。不是这样吗?
标签: c# asp.net casting session-state