像往常一样“再次使用会话”......但面临陌生的情况。 .net 3.5
我不会描述我如何花几个小时来调试任何可以重置变量的操作......因为在那几个小时之后我只是将StateServer模式更改为InProc ......并且IT CAME TO LIFE)
为什么呢?如果我试图将一些非序列化的东西插入到stateserver中,我曾经看到一个异常 - 但是我插入并检索了...同样在跟踪中我在会话中看到了相同类型的对象,但是有另一个ID。最后 - 我使用旧的,经过测试的代码(在重定向和会话存储或检索的情况下)但是使用新的对象类型。
发生了什么事?)
编辑:
在状态服务器端口上检查防火墙流量 - asp在页面请求处理期间不发送任何内容。这就是我可以检索变量下一行的原因。但是为什么他以后会将默认对象写入状态服务器?
答案 0 :(得分:0)
Response.Redirect可能会导致此行为;一旦调用重定向,就会抛出线程中止异常,这可能会阻止设置会话变量。
过载
可以克服这个问题Response.Redirect("~/default.aspx", false);
此调用不会中止线程,因此会成功设置会话变量。
答案 1 :(得分:0)
您的开发机器的环境是什么? 您的应用程序池流程模型部分,您使用了多少个工作进程?
如果您正在使用inProc会话状态,但您的应用程序池流程模型使用了多个工作进程,那么您将遇到此类问题。
请注意,您的开发计算机上的应用池设置很可能与您的生产计算机不同。因此,在会话状态inproc和会话状态服务之间进行更改具有重大意义。
答案 2 :(得分:0)
在序列化对象层次结构的底层类中,创建了一个未标记为Serializable的类。似乎如果不可序列化的对象嵌套到子类中,asp就不会抛出此类异常。太愚蠢了(