遇到一個有趣的問題,我正在寫WCF Restful Webservice。它似乎以某種方式緩存LINQ數據對象。我會盡量解釋...Restful WCF服務和LINQ
這是我的第一次創業到web服務等等,如果我在解釋這一請與我裸露可憐我不是一個LINQ專家...
的Web服務是一個WCF雷斯特夫爾基於.NET 4.0的服務構建,目前正在我本地的ASP.net Dev Server中運行。
我有一個MSSQL 2008數據庫,其中包含一系列有效的IP地址,Web服務使用LINQ進行驗證。驗證客戶端IP與來自數據庫的可接受IP範圍的機制在獨立測試中成功運行。
場景: 客戶端IP爲127.0.0.1 有效的IP範圍是:127.0.0.0到127.0.0.5
我從提琴手執行GET請求,Web服務和它的作品,因爲它應該通過給我返回一個不錯的200狀態碼。然後,我將數據庫中的範圍更改爲127.0.0.0至127.0.0.0,並且當我應該收到401狀態碼時,仍然會收到200狀態碼。然後我去Visual Studio並保存一個文件(沒有任何修改)並返回Fiddler並重新發出請求,現在我得到所需的401狀態碼。
在Web服務中,我設置緩存控制和附註頭爲「無緩存」,這是存在於響應:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Fri, 30 Jul 2010 16:12:56 GMT
X-AspNet-Version: 4.0.30319
Pragma: no-cache
Content-Length: 1121680
Cache-Control: no-cache
Content-Type: application/xml; charset=utf-8
Connection: Close
或..
HTTP/1.1 401 Unauthorized
Server: ASP.NET Development Server/10.0.0.0
Date: Fri, 30 Jul 2010 16:26:48 GMT
X-AspNet-Version: 4.0.30319
Pragma: no-cache
Content-Length: 88
Cache-Control: no-cache
Content-Type: application/xml; charset=utf-8
Connection: Close
似乎對我來說,LINQ過程中的某些內容正在緩存最初從第一個請求中獲得的數據,並且不會爲每個後續請求返回到數據庫。一旦我保存了web服務上的任何文件,它就會導致服務重新編譯,從而執行另一次查找來獲取數據。
有沒有人見過這種情況?
你的數據庫能緩存結果嗎?您可能想要記錄並查看LINQ數據對象中的內容,以便縮小它是在數據庫層還是在堆棧中較高的位置。 – 2010-07-30 16:48:03