J'ai un HttpHandler qui interroge 3 services Web dans une seule requête et stocke les résultats dans un seul cookie.Synchronisation sur le service Web et les appels du navigateur
Comme vous pouvez l'imaginer, les résultats entrent en collision. Voici comment:
Le processus est comme suit: lorsque j'interroge le service 1 et attend le résultat, le cookie im stocker les résultats n'existe pas encore, alors le résultat vient du service 2 et volia, crée le cookie, stocke le Résultat, puis la réponse revient du service 1 et écrase ce cookie, ce qui ne devrait pas être le cas. Ce que je veux, c'est mettre ces demandes en file d'attente.
Dois-je le faire du côté client via javascript? si oui, comment? :)
ou le faire du côté serveur? Donc je ne veux pas d'appels asynchrones. droite?
Voici le code:
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
}
lorsque les réponses arrivent au HttpHandler, il est livré avec querystring.
alors sur cette 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
}
c'est ainsi que je l'ai mis. La façon dont je crée le cookie est un problème je pense.
Donc, si je vous comprends bien: votre site appelle la 'HttpHandler'. Ce HttpHandler appelle les trois services Web, puis renvoie un cookie au navigateur Web appelant, corriger? Pouvons-nous voir s'il vous plaît le code de la façon dont le gestionnaire appelle actuellement les services Web, et comment le cookie est défini? – SamStephens
a édité la question, et a ajouté du code. – DarthVader