我有一个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