2011-10-18 17 views
1

我一直在研究一个项目,它在我的开发机器上工作正常。当我将其移动到舞台服务器进行测试时,出现以下错误:asp.net序列化问题在测试服务器上

Unable to serialize the session state. In 'StateServer' and 'SQLServer' 

错误消息将指定我的一个业务对象作为问题。代码实际上是由另一位开发人员开发的,但我认为问题在于何时将业务对象保存到会话中。

为什么会在我的本地机器上工作,但不在远程服务器上工作?

+1

你确定web.config在两台机器上是绝对相等的吗?如果你使用状态服务器,会话中的所有对象必须是可序列化的。 –

+0

他们绝对不是平等的。差远了。有什么我应该寻找的东西? – William

+0

是会话配置。你应该确保你放在会话中的所有对象都是可序列化的,否则它将无法工作。 –

回答

2

您的开发机器可能使用串行化到内存上的InProc会话提供程序。当使用SQLServer会话提供程序时,对您的对象有更强的要求。

很可能 - 您的一个对象只是不可序列化。原因可能有所不同,从简单的“未标记为可序列化”到“依赖不可序列化的外部类型”。

尝试通过检查内部异常来追踪有问题的类型。通常你会在那里找到意义信息。

+0

有没有一种方法可以检查InProc是否正在使用?不幸的是,服务器是一台客户机,所以我没有太多的控制权。我找到了另外一篇文章,它给出了一些我可以用来测试我的对象是否可序列化的代码,所以我会在有机会的时候测试它。 – William

+0

“web.config”的'sessionState'元素控制数据在会话容器中的持续存在方式。显然它已被配置为客户端机器上的“InProc”或“SqlServer”。请他暂时将其改为“InProc”,以确保问题存在,并花费一些时间修复对象,以便它们可以被序列化。 http://msdn.microsoft.com/en-us/library/h6bb9cz9(VS.71).aspx –

+0

SQL Server会话管理何时输入公式? –

相关问题