yaodong

yaodong
随笔 - 20, 评论 - 367, 引用 - 53

导航

标签

每月存档

最新留言

广告

 

一般使用.NET C#发起一个web请求是用WebClient类,应为使用很简单,但是每调用一次
OpenRead就会在服务器启用一个新Session

使用HttpWebRequest + CookieContainer就可以让多个web请求只有一个session
为HttpWebRequest 指定一个CookieContainer,使用同一个CookieContainer的Request就是一个session

代码如下:

   CookieContainer cc = new CookieContainer();
   for(int i=0;i<100;i++)
   {
    HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://localhost/AspxApp/MainForm.aspx");
    myReq.CookieContainer = cc;
    HttpWebResponse resp = myReq.GetResponse() as HttpWebResponse;
    Stream s = resp.GetResponseStream();
    StreamReader sr = new StreamReader(s);    String text = sr.ReadToEnd();
    sr.Close();
    s.Close();
   }
AspxApp这个程序返回的内容就是SessionId,这100个请求SessionId是相同的

		

打印 | 张贴于 2004-10-10 14:50:00 | Tag:随便聊聊

留言反馈

#回复: 用.NET发起web请求时维持Session的方法 编辑
GetCookieHeader把cookiecontainer读出来用这个GetResponseHeader("Set-Cookie")

现在我想把这个cookie发出去,可是因为取得的是个string,而CookieContainer却是个 CookieContainer

这样怎么转换啊???
2007-09-20 14:21:00 | [匿名用户:爱人]
#回复: 用.NET发起web请求时维持Session的方法 编辑
我也是写这样的代码,但是想使用GetCookieHeader把cookiecontainer里的cookie读取出来时,总是读不出
2007-09-14 21:50:00 | [匿名用户:HR Guy]
#re: 编辑
谢谢,很受启发。原来session状态不能保存是请求时没有发送cookie。

但是cookie一直是变化的,我想,应该每次请求都应该把上次请求返回的cookie发送。等我测试一下。
2006-04-14 18:27:00 | [匿名用户:尖锐湿疣]
#re: 用.NET发起web请求时维持Session的方法 编辑
good job

httpxml
webclient
webrequest/webresponse
tcp/udp
sockets

不同层次的运用

2005-08-23 22:21:00 | [匿名用户:mye.cn]
#re: 用.NET发起web请求时维持Session的方法 编辑
为什么要这样,那我不用100个请求就不是一个sESSION了。
2005-08-07 17:21:00 | [匿名用户:wang2855]
#re: 用.NET发起web请求时维持Session的方法 编辑
按理说应该一个浏览器实例一个session,但是多窗口似乎也只是一个session,即使你浏览不同的内容
2005-08-07 17:20:00 | [匿名用户:wang2855]
#re:用.NET发起web请求时维持Session的方法 编辑
^_~,pretty good!csharpsseeoo
2005-05-18 20:38:00 | [匿名用户:转基因]
#re:用.NET发起web请求时维持Session的方法 编辑
^_^,Pretty Good!
2005-04-10 20:25:00 | [匿名用户:超声波液位计]
#re: 用.NET发起web请求时维持Session的方法 编辑
你的例子中的
myReq.CookieContainer = cc;
我一时还不能明白,可否解释一下?我原来处理Cookie是自己一步一步来的。您这样处理Cookie的方法对于如下这些情况可否适用?
1 cc更新的时候。比如第一个页面返回两个Cookie name=yyy和Sax=1
第二个页面返回两个Cookie name=zzz和age=99
这样以后CC的内容是什么呢?
是否是name=zzz,sax=1,age=99 ????

另外对于一些特殊的Http头中返回的Cookie会正常处理么?比如有些服务器返回的Set-Cookie: XXX有两个,即:
Set-Cookie: xxxxx
Set-Cookie: yyyyy
我用普通的方法只能得到第一个。着急中。。
2005-01-10 20:58:00 | [匿名用户:请教个问题。。]
#re: 用.NET发起web请求时维持Session的方法 编辑
在例如myie之类的多窗口的浏览器中,怎样才能区别对待session?
,按理说应该一个浏览器实例一个session,但是多窗口似乎也只是一个session,即使你浏览不同的内容
2004-10-10 17:01:00 | [匿名用户:liuyuer]
#re: 用.NET发起web请求时维持Session的方法 编辑
既然只是要维护Session,那
Stream s = resp.GetResponseStream();
StreamReader sr = new StreamReader(s);
String text = sr.ReadToEnd();
sr.Close();

这些就没必要。只要简单的发送一个请求即可。

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);
req.UserAgent = "MSIE6.0";
req.Method = "GET";
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
rvl = res.StatusCode;
res.Close();
2004-10-10 16:02:00 | [匿名用户:ghj1976]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.1.0