我有一个在服务器场中运行的 asp.net 应用程序。所以进程内会话已经结束。没有状态服务器。有一个 sql server 数据库(不能用于状态服务器)。没有强制相同的 Web 服务器服务功能,因此无法保证哪个 Web 服务器将为下一页提供服务。
我需要在页面之间保存一块数据(大对象状态)。我不想使用视图状态,因为数据可能很大并且不希望它通过网络。我可以使用数据库来保存数据并在视图状态中使用记录 id 并检索下一页的数据。
有更好的解决方案吗?
我有一个在服务器场中运行的 asp.net 应用程序。所以进程内会话已经结束。没有状态服务器。有一个 sql server 数据库(不能用于状态服务器)。没有强制相同的 Web 服务器服务功能,因此无法保证哪个 Web 服务器将为下一页提供服务。
我需要在页面之间保存一块数据(大对象状态)。我不想使用视图状态,因为数据可能很大并且不希望它通过网络。我可以使用数据库来保存数据并在视图状态中使用记录 id 并检索下一页的数据。
有更好的解决方案吗?
我可以使用数据库来保存数据并在视图状态中使用记录 id 并检索下一页的数据。
您已经消除了所有其他选项。
好吧,我猜你已经排除了大多数选择。假设您无法安装其他服务,我会想到另外两种可能性:
与 SQL Server 版本一样,不要忘记以某种方式清理数据;选项 1 在这方面与 SQL Server 非常相似,但在 SQL Server 的情况下,它可能只是一个集中的清理工作,在文件共享的情况下,问题变成:哪个服务器是中心?
*) 当然,您可以尝试从 ASP.NET 生成辅助进程。这里的问题变成了:如果这个过程有问题怎么办?默认情况下,您的系统管理员无法管理它,除非您使其易于管理。
我不确定我是否没看错,但你能不使用数据库来存储 asp.net 会话吗?
<sessionState
mode="SQLServer"
sqlConnectionString="somedb"
cookieless="AutoDetect"
timeout="20"
/>
您还可以使用某种分布式缓存解决方案,例如memcached(http://www.danga.com/memcached/),它可以在回发之间保留数据。