【问题标题】:Performance Issues when accessing HttpRequestMessage Properties collection in WebAPI在 WebAPI 中访问 HttpRequestMessage 属性集合时的性能问题
【发布时间】:2012-09-20 17:47:11
【问题描述】:

使用 ASP.NET MVC4 我在一个 WebAPI 项目中创建了一个 DelegatingHandler。我使用 Handler 将一些数据插入到 HttpRequestMessage Properties 集合中,以便 Http 管道的后面部分(例如其他处理程序、控制器)可以访问该数据。

例子:

var httpRequest = (HttpRequestMessageProperty) request.Properties["httpRequest"];
httpRequest.Headers["MY_DATA"] = "some data";

我想测试这对 WebAPI 请求处理的吞吐量的影响,所以我创建了一个控制台应用程序,它在 Action 委托中实例化一个 HttpClient,发送一个请求,并在发送下一个请求之前等待响应。我使用此处描述的性能测量策略计算了此操作委托在 5 秒窗口内成功执行的次数: http://www.codeproject.com/Articles/61964/Performance-Tests-Precise-Run-Time-Measurements-wi

我观察到的是,在执行从 Properties 集合中检索 httpRequest 的单行时,性能有很大的损失。如果没有这行代码,我会在 5 秒内看到 >700 次完成。当我添加该行时,它会在 5 秒内下降到

有其他人经历过吗?我应该使用不同的方法来缓存整个 Http 管道中可用的单个请求长度的数据吗?

【问题讨论】:

    标签: c# .net performance caching asp.net-web-api


    【解决方案1】:

    将项目添加到 Current HttpContext Items 集合似乎有效,并且对我正在测量的性能没有明显影响。

    HttpContext.Current.Items.Add(REQUEST_ID_KEY, request.GetCorrelationId().ToString());
    

    【讨论】:

      猜你喜欢
      • 2022-06-28
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 2023-03-20
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      相关资源
      最近更新 更多