如何在asp.net中存储用户数据?

时间:2012-10-19 07:45:10

标签: c# asp.net

我正在开发一个ASP.NET中的电子贸易Web应用程序。

要购买任何东西,首先,用户必须登录。假设用户已登录并开始购物。当用户点击 btnBuy 时,我将此项添加到集合中。到目前为止,一切都运作良好。

假设用户购买了某些内容,bought means here, i added item chosen to the 购物篮 which contains all the items chosen,然后关闭了网络浏览器。我想要做的是存储此数据,以便在用户返回时能够检索此数据。因此,用户可以选择离开的地方。

到目前为止,我想到了两个选项:

1 - )使用XML文件检索数据:我可以使用XML文件检索数据,但问题是当用户删除所选项时,我需要将所有XML文件解析为删除项目选择,嗯,我认为它是昂贵的。它使应用程序非常慢。

2 - )存储在数据库中:我想存储在数据库中,但我认为它也很昂贵。因为,每次用户选择或离开某些内容时,我都需要进行连接,请求,查询等。


你们有什么想法,最好的办法是什么?我在这里走在正确的轨道上吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

ASP.NET提供了基于 Manager模式的解决方案内置的此类存储:名为配置文件。 MSDN链接从哪里开始调查详细信息:http://msdn.microsoft.com/en-us/library/2y3fs9xs%28v=vs.100%29.aspx

可以通过System.Web.HttpContext.Current.Profile访问配置文件几乎在任何地方(当然在n层中适当)。基本对象的类型为 ProfileBase 。但你可以注射你的。还有 ProfileProvider (某些默认在APS.NET中可用作 SqlProfileProvider ),或者您可以注入您的。稍后您可以根据需要将提供程序更改为目标XML,DB ...(例如,在更适合的Web场中使用DB),并使用一些性能提示,如Cache。

来自web.config的此片段显示了如何将个人资料置于播放中。

<profile defaultProvider="ProjectProfile" inherits="MyLib.ProjectProfile, MyLib">
    <providers >
         <clear/>
        <add name="ProjectProfile" type="MyLib.ProjectProfileProvider, MyLib" />
    </providers>
</profile>

您甚至可以将其用于未登录的用户!这可以通过使用另一个web.config设置来完成:

<anonymousIdentification enabled="true" />

哪个支持任何用户的唯一Cookie

答案 1 :(得分:0)

简单的购物车解决方案是在用户的浏览器中使用cookie,因为存储的数据对用户或网站来说并不重要, 这是一个样本: http://www.codeproject.com/Articles/93639/Simple-Shopping-Cart-Basket-User-Control-using-ASP

您可以阅读有关cookie的更多信息:

http://msdn.microsoft.com/en-us/library/ms178194(v=vs.100).aspx

然而,通过使用cookie,您只能在用户使用相同的浏览器访问网站时访问数据,如果对您有用,您可以使用数据库解决方案,相信我的数据库比读取/写入xml快得多文件,您还可以在用户订单完成时清理数据库