我们正在将单个ASP.NET MVC Web应用程序从单个服务器迁移到负载均衡器下的服务器场。它在很大程度上依赖于Session数据,因此我们正在从In Process转向Out,即ASP.NET State Service或SQL Server。我描述的行为发生在两者上。
我们遇到的第一个问题是序列化。一堆数据用一堆技术填充到Session中(旧程序,多年来很多人)。有时具有深图的对象。答案似乎是使用[Serializable]将图中的每个类归类。在这样做之前,请求将返回500和垃圾数据。归因于所有违规类别后,200个回来了真实数据。万岁!
除了:部分加载主页后,一切都清除,主页再次开始加载。然后再次清除并重新加载。无限循环。
仅通过更改回In Process,应用程序就能完美运行。更改为State Server或SQL Server会导致发生相同的循环。
我的问题不是如何修复我们的网络应用程序 - 我没有提供足够的细节。我的问题是我们如何诊断这个?我描述的行为是否提供了我们应该看的线索?有没有办法在proc会话管理之外进行调试/跟踪?是否有可以提供洞察力的工具?
到目前为止,我们已经使用"让我们尝试这个,看看它是否有效" "这个"的版本包括将[Serializable]添加到所有内容,转储"我在这里"到日志,摩擦幸运图腾。到目前为止还没有线索(更不用说解决方案)了。
要明确:我们还没有受到LB的影响。这是一个单一服务器,我们唯一的改变是在()进程,()状态服务器和()SQL Server之间切换所以我不认为我担心机器密钥或AppDomainID 。我确信状态服务和SQL服务器都设置正确。我们已经过了连接错误等,并且在使用SQL Server时,ASPStateTempSessions表中有行(并且ASPStateTempApplications表中有一行)
如何跟踪这种奇怪的循环行为,并使应用程序在Out Of Process状态管理下的行为与处理过程中的行为相同?