【问题标题】:How to save data between calls to a IHttpHandler?如何在调用 IHttpHandler 之间保存数据?
【发布时间】:2010-03-17 14:26:57
【问题描述】:

我有一个 IHttpHandler 作为 jQuery 自动完成输入字段的来源。在处理程序的构造函数中,我生成一个在请求之间保持相当静态的索引(可能需要每天重建一次)。

如何在调用之间缓存索引?调试表明为每个请求调用构造函数。我已将 IsReusable 设置为“false”。

【问题讨论】:

    标签: asp.net httphandler web-services


    【解决方案1】:

    您的处理程序传递了一个HttpContext,这意味着它可以访问应用程序缓存(例如context.Cache["Foo"] = myVal)并且可以在那里保存值。但是,如果您的处理程序实现了 IRequiresSessionState 接口,您也可以将值保存在 Session 中(例如 context.Session["Bar"])。

    【讨论】:

      【解决方案2】:

      HttpHandlers 有一个特殊的属性 IsReusable。您可以在 Handler 实现中覆盖该属性并将其设置为返回 True。 IsReusable 是一个值,指示另一个请求是否可以使用 IHttpHandler 实例。

      所以第一次访问处理程序时会创建处理程序实例,并且在下一次请求时,相同的实例会返回请求 - 所以你的缓存技巧在这种情况下将正常工作。

      http://msdn.microsoft.com/en-us/library/system.web.ihttphandler.isreusable.aspx

      【讨论】:

        猜你喜欢
        • 2017-12-14
        • 2019-08-21
        • 2016-01-08
        • 2017-11-29
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        • 1970-01-01
        • 2020-08-21
        相关资源
        最近更新 更多