1
我有一個基於Perl的REST服務,我使用C#和WCF來使客戶端與服務對話。我有幾個昂貴的電話,並希望構建一個緩存系統。我需要能夠檢查並查看服務器上是否存在新版本的緩存數據。我的想法是使用標準的「If-Modified-Since」請求頭和「304 Not Modified」響應狀態碼,但是我無法捕獲響應中引發的異常。使用WCF,REST和標準HTTP標頭實現客戶端緩存
我的客戶端類來自ClientBase <>。以下是我用來調用服務方法的方法:
private T RunMethod<T>(ReqHeaderType reqHeaders, ResHeaderType resHeaders, Func<T> meth)
{
//Get request and response headers
var reqProp = GetReqHeaders(reqHeaders);
var resProp = GetResHeaders(resHeaders);
using (var scope = new OperationContextScope(this.InnerChannel))
{
//Set headers
OperationContext
.Current
.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = reqProp;
OperationContext
.Current
.OutgoingMessageProperties[HttpResponseMessageProperty.Name] = resProp;
//Return the result of the call
return meth();
}
}
執行運行服務方法的回調時會發生異常。有沒有辦法捕捉異常,並檢查它是否是「未修改」響應?
由於不情願,我部分地接受了你的建議。儘管我正在使用REST入門工具包的HttpClient。 WCF的整個複雜結構對於一個簡單的REST客戶端來說太過矯枉過正,並且隱藏了我所需要的大部分細節。謝謝。 – 2010-11-24 21:16:00