如何将一些自定义数据与当前的HttpRequest相关联?

时间:2012-05-14 12:05:38

标签: c# asp.net .net iis

我需要以某种方式将我的自定义数据附加到我的IIS自定义模块处理的HttpRequest - 以便在IIS管道的早期阶段运行的代码附加一个对象,并且在后续阶段运行的代码可以检索对象并使用它,并且通过添加该对象不会改变IIS管道处理的其他功能。

数据只需要在一个HTTP请求中保留 - 我不需要在请求之间存储它。我需要它自动为每个新请求“重置” - 这样当新请求到来时它不包含我的代码附加到上一个请求的对象。

看起来HttpContext.Items是可行的方法,虽然MSDN对其目的的描述不是很清楚。

正在使用HttpContext.Current.Items解决问题的方法吗?

1 个答案:

答案 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工作方式的任何问题。