我需要以某种方式将我的自定义数据附加到由我的IIS自定义模块处理的HttpRequest – 以便在IIS管道的早期阶段运行的代码附加一个对象,并且在后续阶段运行的代码可以检索对象并使用它而不是其他通过添加该对象来更改IIS管道处理的功能.
数据只需要在一个HTTP请求中保留 – 我不需要将它存储在请求之间.我需要它自动为每个新请求“重置” – 这样当一个新请求到来时它不包含我的代码附加到前一个请求的对象.
看起来像HttpContext.Items
是要走的路,虽然MSDN对其目的的描述不是很清楚.
解决方法
这应该工作 – 我之前在一个项目中完成了这个.
我有一个类有这样的静态属性 –
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工作方式的任何问题.