asp.net中的状态管理

时间:2011-07-13 06:32:49

标签: asp.net

我们正在将支付网关集成到我们的应用程序中。我们面临的问题是,在向支付网关提供变量后,在目标页面上,我们无法在通过不同页面处理数据后获取所有会话值。这将是保持从源页面到不同页面到目标页面的控制值的最佳技术。

我虽然将它保存在临时表中,但它会使流程变得复杂。

请提出一些更好的选择。

提前致谢。 阿南德

4 个答案:

答案 0 :(得分:0)

使用Cookie并在收到付款网关后获取信息后将其删除。

答案 1 :(得分:0)

你应该将它存储在一个会话中,asp.net内置了3种会话管理方法,它们是数据库,状态服务器或本地内存。

您可以将数据存储在会话中,如此

Session [“myKey”] =“myValue”;

然后使用Session [“myKey”];

获取它

只要您将会话超时设置为(默认情况下我认为是20分钟),数据就会存在于会话中

我会建议使用数据库或状态服务器,因为这些选项在Web场方案中有效,而内存则不会(至少没有一些智能负载均衡器总是将客户端重定向回服务器,其原始请求来自)。

使用cookie也是一种选择,但是根据您的安全要求,它可能是不可接受的,因为用户可以查看cookie并可能更改,但您可以通过加密和散列cookie来缓解此问题。

答案 2 :(得分:0)

创建一个包含您需要的所有订单对象。然后将此Order对象沿着会话传递到您添加内容的每个页面,并在最终页面中将对象保存到DB或者您要用它做什么

答案 3 :(得分:0)

这取决于您希望维护的数据的性质。如果数据丢失是可接受的,那么您可以将此数据推送到会话中。这将是最简单的机制 - 但是,在进程内会话存储的情况下,数据将在服务器重新启动时丢失(或者在Web场的情况下)。您可以选择进程外会话存储(数据库或SQL),但这意味着您的整个会话数据将保留在另一个介质中。如果会话超时,数据仍然会丢失。

或者,您可以将数据持久保存到数据库(或其他持久性介质)中 - 它将从ASP.NET会话中解除链接,您将获得很大的灵活性。另一方面,您必须编写代码以将数据持久保存到DB中(使用ORM,例如EF或NHibernate可以节省时间)。就个人而言,我只会在数据非常关键并且必须在会话重新开始后继续使用这条路线(即用户可以退出网站并在下次登录时恢复/审查交易。例如,订单详情或持续购物车等)。

相关问题