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容器.
有没有更好的方法或推荐的方法来制作这样的代理?
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |