8

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

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

貌似HttpContext.Items是要走的路,虽然MSDN对其用途的描述不是很清楚。

是用HttpContext.Current.Items方法解决我的问题吗?

4

1 回答 1

6

这应该可行 - 我以前在一个项目中做过这个。

我有一个类具有这样的静态属性 -

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

于 2012-05-14T12:21:18.290 回答