C#在ASP.NET中的当前请求全局变量

5
我熟悉ASP.NET中的应用程序和会话键/值对象存储。 我正在寻找一个全局存储区,可以在发出请求时将值存放其中,该值仅对请求的持续时间有效,但也可被业务层DLL访问。 我被告知有一个HttpRequest对象可以实现这一点,但未能找到更多信息。
使用情况是当网页上的按钮被点击时,会触发POST到服务器并创建一个值,我希望将其存储在内存中,只在返回HTML到客户端之前的请求期间有效。

你的业务层是否与ASP.NET在同一进程中运行? - Randy Levy
4个回答

11

你需要使用HttpContext.Current.Items:

 HttpContext.Current.Items.Add("key", "value");
 string val =  HttpContext.Current.Items["key"] as string;

更多信息

同时,在asp.net应用程序中,将对象存储在线程上下文和CallContext中存在问题。为了在请求期间维护对象的安全选项似乎只有HttpContext.Current.Items。


3

4GuysFromRolla有一篇很好的文章,介绍了如何使用HttpContext在每个请求中存储项目。


2
您可以将您的项目添加到HttpContext.Current.Items中。
要了解更多信息,建议您阅读HttpContext.Current.Items的3个热门用途(他们不会告诉你)

一般来说,HttpContext.Current.Items并没有得到太多关注, 但是让我告诉你,我在这里改变所有这些。对于那些不知道的人, System.Web.HttpContext.Current.Items是一个甜蜜的键值对集合, 您可以使用它来在参与单个HTTP请求的所有组件之间传递对象。


1

我相信你正在寻找Page.Context属性,特别是其中的Items集合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接