Asp.net 删除/忽略将导致.NET反序列化错误的会话项

Asp.net 删除/忽略将导致.NET反序列化错误的会话项,asp.net,session,serialization,session-variables,Asp.net,Session,Serialization,Session Variables,我试图通过允许在ASCX模板中将一个小的验证方法定义为“内联”作为一个操作,这样做是聪明的: <%= OnValidation(delegate(FormSubmission form, FormResult errors) { // form checks in here, append errors to errors variable if required }) %> 它实际上是一种处理方式,但为了确保在回发过程中可以调用它,我需要在会话中根据表单ID存储该方法

我试图通过允许在ASCX模板中将一个小的验证方法定义为“内联”作为一个
操作
,这样做是聪明的:

<%= OnValidation(delegate(FormSubmission form, FormResult errors) {
    // form checks in here, append errors to errors variable if required
}) %>

它实际上是一种处理方式,但为了确保在回发过程中可以调用它,我需要在会话中根据表单ID存储该方法。这也起作用,直到应用程序需要重建或引用更改,然后整个过程崩溃,因为它找不到“app_Webxxxx”为了对留在用户会话中的方法进行反序列化(如果我使用InProc会话,我想这不会发生,因为清除Cookie会消除错误,但它也必须在SQLServer模式下工作)

为此,有没有一种方法可以在这些类型的项目引起问题之前删除它们,或者干脆忽略它们(我知道是惰性选项)?我不能在它们运行后删除它们,因为用户可能不会提交表单。我能想到的最好办法是对
应用程序的启动进行一些检查,但我不确定这是否会执行,以及检查什么


非常感谢任何线索

我已经设法解决了这个问题,尝试/捕获会话检索,如果出现问题,只需清除该项,但如果有人有更优雅的解决方案,那就太好了。