当WCF REST服务启用了缓存时,底层代码(当然)不会在后续调用同一URI时运行。但是,我想知道是否有一种方法可以挂钩到缓存提供程序以查看请求进入然后记录它。这可用于分析目的或跟踪API使用情况。
答案 0 :(得分:3)
WCF REST缓存由ASP.NET缓存模块完成,该模块已注册处理HttpApplication.ResolveRequestCache
和HttpApplication.UpdateRequestCache
事件。您只需要在ResolveRequestCache
之前处理事件(最合适的是BeginRequest
)并直接在HttpContext.Current.Request
中访问请求(您可以使用InputStream
属性来读取纯HTTP请求)。这些事件通常在Global.asax文件中处理。
请注意,缓存可以在多个级别上进行 - 客户端可以在其自己的缓存中拥有数据,代理服务器可以缓存数据等,因此不一定所有使用缓存响应的请求都会命中您的服务器。您可以通过在缓存配置文件中设置Location
来控制缓存数据的位置。