【问题标题】:Storage medium for the lifecycle of a single request?单个请求生命周期的存储介质?
【发布时间】:2023-03-11 16:14:01
【问题描述】:

我确定有一个请求范围的基于object 的存储介质,类似于HttpContext.Current.Session,它仅在单个请求的生命周期内全局持久存在,但我无法记住它。

【问题讨论】:

  • 你的意思是ViewState?它不是请求范围,因为它在回发中存储值。也许Request.QueryStringRequest.Params,但这也是为了维护跨回发的值(并检测用户提交参数)?嗯,如果您只需要为单个请求存储值,为什么不简单地使用页面的类成员?它的生命周期正是页面的生命周期。
  • @TimSchmelter,它是 HttpContext.Items - 它很有用,因为它可以从静态上下文中访问

标签: c# asp.net datapersistance


【解决方案1】:

我敢打赌你在想HttpContext.Items

获取一个键/值集合,该集合可用于在 HTTP 请求期间在 IHttpModule 接口和 IHttpHandler 接口之间组织和共享数据。

对于在请求周期不同部分的 HttpModules、HttpHandler 和页面之间共享状态非常有用。

更多阅读:

请注意,HttpContext.Items 适用于 ASP.NET WebForms 和 ASP.NET MVC,但在同一个 Web 应用程序中使用两者时需要注意。更多信息请关注this question.

【讨论】:

    【解决方案2】:

    在 ASP.Net MVC 中有TempData。保留在那里的项目只能从一个请求到下一个请求继续存在。最终,它的存储是会话状态。

    【讨论】:

      【解决方案3】:

      你不能使用ViewData(如果它是 ASP.NET MVC)或 ViewState(如果它是 ASP.NET)吗?

      【讨论】:

      • Viewstate 在回发中持续存在,即跨越多个请求。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多