我有一个第三方工具(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)];
request
是HttpWebRequest
就像有一个Login方法一样,有一个Logout方法可以有效地使cookie过期,我使用这个调用从字典中删除记录。 对于未进行Logout调用的情况,我可能会节省创建Cookie的时间,因此我可以在添加新Cookie时检查并删除字典中的旧Cookie容器。
有没有更好的方法或推荐的方法来制作这样的代理?