为现有的Web服务构建c#代理以进行cookie处理

时间:2017-03-29 00:56:01

标签: c# web-services wcf cookies soap

我有一个第三方工具(T),我需要通过它来使用Web服务。问题是服务要求客户​​端能够处理cookie而T不能。

该服务要求您调用Login方法设置一个cookie,该cookie需要在将来的调用中使用。

所以,我已经制作了一个临时Web服务,它执行cookie处理并返回一个SessionId,这是一个Guid到T,T可以用于后续调用。

我正在使用持久词典

private Dictionary<Guid, CookieContainer> _cookieJar 

使用ServiceBehavior属性进行持久化,就像装饰服务类一样:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class ServiceClass: IServiceClass

存储cookie并在调用Login时返回sessionId。当T使用sessionId进行后续调用时,我使用相应的CookieContainer转发这些请求:

request.CookieContainer = _cookieJar[new Guid(sessionId)];

requestHttpWebRequest

就像有一个Login方法一样,有一个Logout方法可以有效地使cookie过期,我使用这个调用从字典中删除记录。 对于未进行Logout调用的情况,我可能会节省创建Cookie的时间,因此我可以在添加新Cookie时检查并删除字典中的旧Cookie容器。

有没有更好的方法或推荐的方法来制作这样的代理?

0 个答案:

没有答案