c# – 如何将某些自定义数据与当前的HttpRequest相关联?

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

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

看起来像HttpContext.Items是要走的路,虽然MSDN对其目的的描述不是很清楚.

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

解决方法

这应该工作 – 我之前在一个项目中完成了这个.

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

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

相关文章

项目中经常遇到CSV文件的读写需求,其中的难点主要是CSV文件...
简介 本文的初衷是希望帮助那些有其它平台视觉算法开发经验的...
这篇文章主要简单记录一下C#项目的dll文件管理方法,以便后期...
在C#中的使用JSON序列化及反序列化时,推荐使用Json.NET——...
事件总线是对发布-订阅模式的一种实现,是一种集中式事件处理...
通用翻译API的HTTPS 地址为https://fanyi-api.baidu.com/api...