我有一個HttpHandler在單個請求中查詢3個Web服務並將結果存儲在一個cookie中。Web服務和瀏覽器調用同步
正如你想象的那樣,結果會相互衝突。這是如何:
過程如下: 當我查詢服務1,並等待結果,存儲結果的cookie不存在,然後結果來自服務2和volia,創建cookie,存儲結果,然後響應從服務1返回並覆蓋該cookie,而不應該是這種情況。
我喜歡的是排隊這些請求。
我應該在客戶端通過JavaScript做到這一點嗎?如果是的話,如何?:)
或做它在服務器端?
所以我不想異步調用。對?
這裏是代碼:
if(service1.isEnabled){
invokeService1();
}
if(service2.isEnabled){
invokeService2();
}
if(service3.isEnabled){
invokeService3();
}
invokeService1(){
callToService1();
// response comes to another HttpHandler, which is a redirect from the service
}
invokeService2(){
callToService2();
// response comes to another HttpHandler, which is a redirect from the service
}
invokeService3(){
callToService3();
// response comes to another HttpHandler, which is a redirect from the service
}
當響應到達的HttpHandler的,它帶有查詢字符串。
然後在此的HttpHandler:
HttpCookie cookie = request.Cookie.Get(MYCookie) ?? new HttpCookie(MYCookie);
if(request.Params["foo"]){
//set cookie content
}
if(request.Params["Bar"].isNotNullOrEmpty()){
//set cookie content
}
這是我如何設置它。我認爲創建cookie的方式是一個問題。
所以,如果我理解正確的話:你的網站調用'HttpHandler'。這HttpHandler調用三個Web服務,然後返回一個cookie到調用Web瀏覽器,正確?我們可以查看處理程序當前如何調用Web服務的代碼,以及Cookie如何設置? – SamStephens 2010-10-18 01:51:09
編輯了這個問題,並添加了一些代碼。 – DarthVader 2010-10-18 13:33:35