使用 ASP.NET MVC4,我在 WebAPI 项目中创建了一个 DelegatingHandler。我使用 Handler 将一些数据插入到 HttpRequestMessage 属性集合中,以便 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-无线
我观察到的是,在执行从 Properties 集合中检索 httpRequest 的单行时,性能上有很大的损失。如果没有这行代码,我会在 5 秒内看到 >700 次完成。当我添加该行时,它会在 5 秒内降至 <20 次。
有没有其他人经历过这个?我应该使用不同的方法来缓存整个 Http 管道中可用的单个请求长度的数据吗?