c# – 在Web服务和浏览器调用上同步
我有一个HttpHandler,可以在一个请求中查询3个Web服务,并将结果存储在一个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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |