Asp.net 关于持久性方法的想法

Asp.net 关于持久性方法的想法,asp.net,persistence,Asp.net,Persistence,我正在寻找一些想法,以便在不使用会话变量、cookie、上下文缓存、视图状态或会话数据库的情况下,在多个页面请求上最好地持久化一个对象 我有一个web表单(ASPX),其中包含多个用户控件,这些控件将充当“页面”,并且这些控件将以一次一个的方式显示: <uc1:UserControl1 id="controlStep1" runat="server" visible="true" /> <uc2:UserControl2 id="controlStep2" runat="ser

我正在寻找一些想法,以便在不使用会话变量、cookie、上下文缓存、视图状态或会话数据库的情况下,在多个页面请求上最好地持久化一个对象

我有一个web表单(ASPX),其中包含多个用户控件,这些控件将充当“页面”,并且这些控件将以一次一个的方式显示:

<uc1:UserControl1 id="controlStep1" runat="server" visible="true" />
<uc2:UserControl2 id="controlStep2" runat="server" visible="false" />
<uc3:UserControl3 id="controlStep3" runat="server" visible="false" />
我希望在客户在web应用程序中时,在切换用户控件的可见性时,通过向导式的界面继续保存此情景对象。目前,我正在客户的第一个请求期间在HttpModule中创建情境对象的实例,并将其存储在HttpContext.Current.Items中,但我希望使用延迟加载,以便只根据需要加载各种情境对象属性。但是,例如,如果在controlStep1上访问一个属性,我希望保持对象的状态,这样,如果在controlStep2上访问同一个属性,则getter不必返回查询字符串来获取请求的属性值。我可以序列化对象并在HttpModule中反序列化,但如果访问并加载了属性,则在下一个请求中不会记住它


有什么建议吗?

文件系统有时是一种有用的持久性机制。

您应该解释您对持久化状态的标准机制(会话、缓存等)有什么反对意见。查看状态=>大小管理,Cookie=>可能被用户禁用,会话=>策略-我无能为力:)这个问题似乎与“我想建立一个ASP.NET网站,但不想使用ASP.NET“。这有点傻。如果你问这样的问题,你可能会想重新思考你的架构。ViewState是专门为此而设计的,如果你好好照顾它,它不会失控。”。特别是当你只在其中保存特定对象时。我认为这是剩下的唯一东西(除了上传到FTP服务器或通过邮件发送并稍后检索;-)。@Steven,looool,我会选择邮件解决方案。@Steven,Thx用于减轻情绪。这让我觉得限制的疯狂不仅仅是在我的脑海中:)
public class Situation
{
    private string _jobId;
    private JobType _jobType;

    public string JobId
    {
        get
        {
            if (!String.IsNullOrWhitespace(_jobId))
                return _jobId;

            _jobId = GetFromQueryString("jid");    
            return _jobId;
        }
    }

    public JobType JobType
    {
        get
        {
            if (_jobType != JobType.Default)
                return _jobType;

            _jobType = GetEnumFromQueryString("jtype", typeof(JobType));
            return _jobType;
        }
    }
}