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

Ash*_*Ash 6 c# cookies wcf soap web-services

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

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

所以,我做了一个临时Web服务,它处理cookie并返回一个SessionId,它是一个Guid to T,T可以用于后续调用.

我正在使用持久字典

private Dictionary<Guid, CookieContainer> _cookieJar 
Run Code Online (Sandbox Code Playgroud)

使用ServiceBehavior像装饰服务类这样的属性来持久化:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class ServiceClass: IServiceClass
Run Code Online (Sandbox Code Playgroud)

在调用Login时存储cookie并返回sessionId.当T使用sessionId进行后续调用时,我使用附加到它的字典中的相应CookieContainer转发这些请求:

request.CookieContainer = _cookieJar[new Guid(sessionId)];
Run Code Online (Sandbox Code Playgroud)

request 是一个 HttpWebRequest

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

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