2011-12-15 59 views
1

在我的ASP.NET应用程序中,我创建了一个自定义线程。线程正在更新会话。当我使用InProc会话状态时,它运行良好,但是当使用SQLServer会话状态时,会话不会被更新。有任何想法吗?ASP.NET会话和线程问题

+0

你是如何从其他线程访问Session的? – 2011-12-15 12:05:00

回答

1

我找不到要备份的文档,但我认为SqlServer会话状态会在请求处理结束时将Session序列化到数据库。因此,在此之后发生的任何更改都会被忽略,因为新的请求将从数据库中获取会话。

+1

它是有道理的。因此,当我使用InProc时,其他线程更新内存中的相同位置,但使用SQLServer时,它永远不会将其序列化到服务器。所以现在我的问题是 - 我如何强制保存到数据库或让线程知道它应该序列化会话到数据库?谢谢 – Ben 2011-12-15 14:51:08

0

在这个过程中做什么很重要?看来你正在更新存储在会话中的一些对象。

现在它使用InProcess而不是Sql意味着你有对象序列化的问题。

如果您正在使用Session中存储的一些类实例,使该类可序列化。

如果这不能帮助您,请提供更多信息。

谢谢。

0

要查看正在进行的实际示例,请查看此问题(使用示例代码)I posted a few days ago

我不认为有一种方法可以让主线程知道它应该等待序列化到数据存储之前。你只需要等到后台线程完成。哪个有点挫败了使用后台线程的目的。