【问题标题】:Setting HTTPHandler isreusable property设置 HTTPHandler isreusable 属性
【发布时间】:2011-04-12 19:30:42
【问题描述】:

我正在使用 HTTP 处理程序来引发文件下载。基本上,“ProcessRequest”中的代码从数据库中检索数据,使用 GUID 作为其名称创建现有模板电子表格的临时副本,并写入从数据库中检索到的数据使用 COM 逐个单元格地进入它,引发文件下载并删除创建的临时电子表格。整个过程通常需要大约 4-5 分钟。但是当我们尝试同时测试这个过程时大约需要 15 分钟。

我想知道将“IsReusable”布尔值设置为 true 是否有助于提高性能。但我不确定它是否安全。

有人可以帮我吗?

**更新:**因为我为创建的每个临时文件使用不同的文件名,所以我假设不会有安全问题。但仍然不确定。

【问题讨论】:

    标签: asp.net httphandler


    【解决方案1】:

    IsReusable 属性将按照您的想法执行。它不会在每次发出请求时都构建一个全新的处理程序,而是重用现有的处理程序。如果你有在构造函数中创建的实例变量,它可以提高性能,但前提是它们的创建成本很高。

    此外,如果您在处理程序中维护任何类型的状态,那么您保留它的任何状态都将用于下一个请求。这可能会产生意想不到的副作用。

    如果您的大部分过程发生在 ProcessRequest 方法中,那么您的瓶颈就在那里,您应该使用分析来查看可以加快性能的地方。

    【讨论】:

      【解决方案2】:

      仅当 HttpHandler 的此实例预期处理多个请求时,IsReusable 属性才设置为 true。可能有一个不同的 Web.Config 设置可以解决您的问题,也许是 httpRuntime 属性的 executionTimeout 属性:

      <httpRuntime appRequestQueueLimit="100" executionTimeout="600" />  
      

      更多信息:

      http://articles.sitepoint.com/article/web-config-file-demystified

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多