我需要以某种方式将我的自定义数据附加到我的IIS自定义模块处理的HttpRequest
- 以便在IIS管道的早期阶段运行的代码附加一个对象,并且在后续阶段运行的代码可以检索对象并使用它,并且通过添加该对象不会改变IIS管道处理的其他功能。
数据只需要在一个HTTP请求中保留 - 我不需要在请求之间存储它。我需要它自动为每个新请求“重置” - 这样当新请求到来时它不包含我的代码附加到上一个请求的对象。
看起来HttpContext.Items
是可行的方法,虽然MSDN对其目的的描述不是很清楚。
正在使用HttpContext.Current.Items
解决问题的方法吗?
答案 0 :(得分:4)
这应该有效 - 我之前在一个项目中做过这个。
我有一个具有静态属性的类 -
public class AppManager
{
public static RequestObject RequestObject
{
get
{
if (HttpContext.Current.Items["RequestObject"] == null)
{
HttpContext.Current.Items["RequestObject"] = new RequestObject();
}
return (RequestObject)HttpContext.Current.Items["RequestObject"];
}
set { HttpContext.Current.Items["RequestObject"] = value; }
}
}
然后RequestObject包含我的所有自定义数据,然后在我的应用程序中我可以做
AppManager.RequestObject.CustomProperty
到目前为止,我还没有遇到HttpContext.Items工作方式的任何问题。