日期:2014-05-19  浏览次数:20849 次

HttpWebRequest模似登录到非IIS的网站。保持cookie或session的问题
有一个软件是通过html进入设置管理的。软件自带了WEB服务器.
我已经能通过HttpWebRequest发送登录数据并得到正确的回应,但取不到cookie值。没法保持登录状态。代码:
CookieCollection   myCookies;
CookieContainer   myCookieContainer   =   new   CookieContainer();

设置
myHttpWebRequest.CookieContainer   =   myCookieContainer;

取cookie
HttpWebResponse   myHttpWebResponse   =   (HttpWebResponse)myHttpWebRequest.GetResponse();
myCookies   =   myHttpWebResponse.Cookies;

myCookies为null,同样的代码。把url改一下如改为 "http://passport.csdn.net/UserLogin.aspx "就可以取得cookie,是不是在非IIS架设的网站里不起作用啊?
用正常的方式登录产生的cookie文件里有个段 "session_id
41f38daba89747b2bc39c956..... "字样,是不是要保持session?而不是cookie?保存session又要怎么样保持?

------解决方案--------------------
代码不全,看不出什么。但是cookie保持和是不是iis无关。
------解决方案--------------------
cookie保持和是不是iis无关
session是由服务器端保持的,但它和cookie是关联的,也就是说你只要保持了cookie也就保持了session
------解决方案--------------------
http://www.dotnet247.com/247reference/msgs/51/255014.aspx
------解决方案--------------------
try this sample
http://support.microsoft.com/kb/303436
------解决方案--------------------
我也碰到和楼主同样的问题,花了好多时间跟踪代码发现Cookie是保存在myHttpWebRequest.CookieContainer中,执行myHttpWebRequest.GetResponse()后,CookieContainer属性值会更新,所以只要保存请求的Cookie就行了