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

sha*_*oth 7 .net c# asp.net iis

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

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

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

是用HttpContext.Current.Items这种方式来解决我的问题?

Kev*_*ain 5

这应该有效 - 我之前在一个项目中做过这个。

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

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; }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后 RequestObject 包含我所有的自定义数据,所以在我的应用程序中我可以做

AppManager.RequestObject.CustomProperty
Run Code Online (Sandbox Code Playgroud)

到目前为止,我还没有遇到 HttpContext.Items 工作方式的任何问题。