2012-09-28 87 views
1

使用ASP.NET MVC4我在WebAPI項目中創建了DelegatingHandler。我使用處理程序將一些數據插入到HttpRequestMessage屬性集合中,以便稍後的Http管道部分(例如其他處理程序,控制器)可以訪問該數據。訪問WebAPI中的HttpRequestMessage屬性集合時的性能問題

實施例:

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

我想測試的吞吐量的WebAPI請求處理的這方面的影響,所以我創建一個控制檯應用程序的是,一個Action委託內,實例化一個HttpClient的,發送請求,並在發送下一個之前等待響應。我使用這裏描述的性能測量策略指望這個Action委託的成功執行的5秒窗口內數: http://www.codeproject.com/Articles/61964/Performance-Tests-Precise-Run-Time-Measurements-wi

我所觀察到的是,有超過性能的幅度損失在執行單行從Properties集合中檢索httpRequest。如果沒有這行代碼,我會在5秒內看到> 700次完成。當我添加該行時,它會在5秒內完成。

有沒有其他人經歷過這個?我應該使用不同的方法來緩存數據,以便在整個Http管道中可用的單個請求的長度?

回答

0

將項目添加到當前HttpContext Items集合似乎可以正常工作,並且對我測量的性能沒有可察覺的影響。

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