加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在Web服务和浏览器调用上同步

发布时间:2020-12-15 21:11:31 所属栏目:百科 来源:网络整理
导读:我有一个HttpHandler,可以在一个请求中查询3个Web服务,并将结果存储在一个cookie中. 如您所想,结果相互冲突.方法如下: 流程如下: 当我查询服务1并等待结果时,存储结果的cookie还不存在,然后结果来自服务2和volia,创建cookie,存储结果,然后响应从服务1返回
我有一个HttpHandler,可以在一个请求中查询3个Web服务,并将结果存储在一个cookie中.

如您所想,结果相互冲突.方法如下:

流程如下:
当我查询服务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的方式是个问题.

解决方法

您可以序列化请求并让客户端间接发布它们吗?

例如:

客户的第一个请求

GET /handler.ashx HTTP/1.1
....

服务器记录请求中没有cookie.因此,它假设这是一个新的连接.具有重定向的服务器响应:

HTTP/1.1 302 Moved
Location: http://server.com/handler.ashx?executeService1

客户的第二次请求

现在客户端向handler.ashx?executeService1发送请求

处理程序获取此请求并查询WebService1.并在响应中放入一个cookie(使用另一个重定向)

HTTP/1.1 302 Moved
Location: http://server.com/handler.ashx?executeService2
set-cookie: value

你明白了吗?

优点是服务器与客户端握手. SErver知道必须调用Web服务的次数,并且可以使用cookie来执行此操作.

您建议的另一个选项是在客户端使用带有XML有效负载的javascript和AJAX.完成Web服务调用后,您可以使用服务调用的结果调用服务器,服务器可以在客户端上设置cookie.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读