2
當WCF REST服務已啓用高速緩存,底層代碼(當然)未在後續調用相同的URI上運行。但是,我想知道是否有辦法掛鉤緩存提供程序來查看請求,然後將其記錄下來。這將用於分析目的或跟蹤API使用情況。是否有可能掛鉤到WCF緩存提供程序?
當WCF REST服務已啓用高速緩存,底層代碼(當然)未在後續調用相同的URI上運行。但是,我想知道是否有辦法掛鉤緩存提供程序來查看請求,然後將其記錄下來。這將用於分析目的或跟蹤API使用情況。是否有可能掛鉤到WCF緩存提供程序?
WCF REST緩存是由ASP.NET緩存模塊完成的,緩存模塊註冊處理HttpApplication.ResolveRequestCache
和HttpApplication.UpdateRequestCache
事件。你只需要處理事件之前ResolveRequestCache
(最合適的是BeginRequest
),並直接在HttpContext.Current.Request
訪問請求(可以使用InputStream
屬性來讀取純HTTP請求)。這些事件通常在Global.asax文件中處理。
注意,高速緩存可以發生在多個層次上 - 客戶端可以在自己的緩存有數據,代理服務器可以緩存數據等,所以不一定在使用緩存的響應會打你的服務器的所有請求。您可以通過在緩存配置文件中設置Location
來控制數據緩存的位置。
有道理。我不確定緩存查找是否發生在HttpApplication類中的任何事件之前。現在我明白了。我會試一試。如果內容緩存在服務器的上游,那麼很好,但是這樣可以讓我們捕獲到達服務器的所有內容。謝謝。 – 2011-06-14 21:04:24