首页 新闻 会员 周边

c#怎样获取到ASP.NET_SessionId的值

0
悬赏园豆:100 [已解决问题] 解决于 2012-11-08 11:02

如题

这是网上找的的请求类:http://zhoufoxcn.blog.51cto.com/792419/561934

之前我用这个方法,咋就获取不到ASP.NET_SessionId呢?请高手指点!

C#
问题补充:

查了些资料,提到可以用CookieContainer来获取,试了下,还是不行,哪位能给个demo不?跪求!

 

刚刚搜索了下,和这个贴问题一样

http://bbs.csdn.net/topics/200045532

 

求知若渴,虚怀若愚的主页 求知若渴,虚怀若愚 | 初学一级 | 园豆:112
提问于:2012-11-06 18:03
< >
分享
最佳答案
1

(this.Session.Contents).SessionID  要取这个吗?

收获园豆:60
sym_cn | 小虾三级 |园豆:798 | 2012-11-07 10:10

是取这个,但是不是这样取,是在客户端取

求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-07 10:12

@寕: 先输出到客户端  再从客户端取呗

sym_cn | 园豆:798 (小虾三级) | 2012-11-07 10:12

@sym_cn: <input type="text" name="sessionId"       value="<%=request.getSession().getId()%>" />  

sym_cn | 园豆:798 (小虾三级) | 2012-11-07 10:15

@sym_cn: 通过HttpWebRequest发送请求后,HttpWebResponse响应来咋取?

求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-07 10:23

@寕: WinForm?  还是WebForm

sym_cn | 园豆:798 (小虾三级) | 2012-11-07 10:27

@sym_cn: winform

求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-07 10:34

@寕: 留下你的邮箱我发给你 Demo

sym_cn | 园豆:798 (小虾三级) | 2012-11-07 10:49

@sym_cn: 869008813@qq.com

求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-07 10:55

@寕: OK

sym_cn | 园豆:798 (小虾三级) | 2012-11-07 11:05

@sym_cn: 谢谢你的demo,但是,demo里在page_load事件输出了ASP.NET_SessionId,我想要是模拟登录,得到ASP.NET_SessionId的值

求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-07 11:19

@寕: 你是说 想取到 没有输出的  ?

sym_cn | 园豆:798 (小虾三级) | 2012-11-07 11:41

@sym_cn: 想在客户端取到ASP.NET_SessionId的值,但是,你给的demo里包含了服务端和客户端。

求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-07 11:54

@寕: 服务端是别人的对吧

sym_cn | 园豆:798 (小虾三级) | 2012-11-07 11:58
 String session="";
            HttpWebResponse myresponse;
            try
            {
                myresponse = (HttpWebResponse)myrequest.GetResponse();
            }
            catch (WebException ex)                      //得到sessionid!!!
            {
                WebResponse res = ex.Response;
                session = res.Headers["Set-Cookie"];
                session = session.Substring(0, session.IndexOf(";"));
            }

 

@寕

sym_cn | 园豆:798 (小虾三级) | 2012-11-07 12:03

@sym_cn: 刚刚搜索了下,和这个贴问题一样

http://bbs.csdn.net/topics/200045532

求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-07 14:25

@寕: 不一样吧  你不是要取得Session  

sym_cn | 园豆:798 (小虾三级) | 2012-11-07 14:36

@sym_cn: 现在模拟登录不成功,取不了ASP.NET_SessionId

求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-07 14:53

@寕: 服务器没放出来 应该取不到。

sym_cn | 园豆:798 (小虾三级) | 2012-11-07 15:32

@sym_cn: 晕倒,请求aspx页面,要加上VIEWSTATE,而且还得编码!这。。。

IDictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("__VIEWSTATE", System.Web.HttpUtility.UrlEncode(viewState, Encoding.UTF8));
parameters.Add("__EVENTVALIDATION", System.Web.HttpUtility.UrlEncode(eventValidation, Encoding.UTF8));

不编码,还报

Invalid length for a Base-64 char array.

这个错,哎今天总算有点头绪了!

求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-07 18:05

@寕: 不是这样的。在get请求的时候是没问题的。如果是模拟点击页面里面的按钮会存在此问题。   你取到ViewState里面只是 界面控件呼叫后台的一些注册而已。 里面没有session。

sym_cn | 园豆:798 (小虾三级) | 2012-11-08 09:41

@sym_cn: 我现在请求一个用asp.net控件做的登录,用fiddler调试,返回如图的结果了,但是cookie里没有东西

求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-08 09:56

@寕: 你请求的结果很明显了   后台 有某些判断 Response.write("<script>window.location.replace('/login.aspx')</script")。 应该是判断Session了。

 

你通过WInform  增加个webbrowser控件。 隐藏起来  在 webborowser里面控制这样可行吗?

sym_cn | 园豆:798 (小虾三级) | 2012-11-08 10:10

@sym_cn:如果是这样的话,可能是验证码的问题了,因为请求字段都没问题,唯独验证码漏掉了,你觉得呢?

if (Session["CheckCode"] != null && Session["CheckCode"].ToString() != ""){

。。。。。。。。。。。。。。。。。。。。。

}else{
    Response.Write("<script language='javascript'>window.location.replace('/login.aspx')</script>");
}
求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-08 10:36

@sym_cn: 哎,问题终于解决了,原来是用get方式请求验证码页面时,CookieContainer cookieContainer = new CookieContainer();这个东西没加进去,导致验证码验证失败!

 

多谢了!!!

求知若渴,虚怀若愚 | 园豆:112 (初学一级) | 2012-11-08 11:01
其他回答(6)
1

在请求响应头的set-cookie里

收获园豆:40
向往-SONG | 园豆:4853 (老鸟四级) | 2012-11-06 21:19

响应头里没有set-cookie咋办?

@寕: 

没有就取不到,只有服务器发送了才有,服务器对session或cookie操作了才会产生sessionid

支持(0) 反对(0) 向往-SONG | 园豆:4853 (老鸟四级) | 2012-11-07 09:37

@向往-SONG:但是, 我用Fiddler抓包,又可以抓到ASP.NET_SessionId。

@寕: 

那可能是你程序请求的页面不对,比如你要模拟登陆后才会产生sessionid。

支持(0) 反对(0) 向往-SONG | 园豆:4853 (老鸟四级) | 2012-11-07 10:21

@向往-SONG: 


刚刚模拟了一个登录,结果是和正常访问请求页一样的效果,以为是模拟提交表单时,字段错误,抓包一看,没错,然后,想想是否是提交的处理页不对,然后用firebug测试下,处理页是对的,这是到底咋回事呢?

@寕: 

请求的是哪个网站登录?一般网站只要表单字段对了应该就能登录上,有的安全性高的就不一定了。

支持(0) 反对(0) 向往-SONG | 园豆:4853 (老鸟四级) | 2012-11-07 10:59

@向往-SONG: 用asp.net控件写的一个登录页,

@向往-SONG: 


刚刚搜索了下,和这个贴问题一样

http://bbs.csdn.net/topics/200045532

@寕: 

你的也是请求的qq那个登录的?他那个是没有完全模拟浏览器信息,具体要分析他页面的请求和响应信息。

支持(0) 反对(0) 向往-SONG | 园豆:4853 (老鸟四级) | 2012-11-07 14:53

@向往-SONG:只是请求的url不同,但是所描述的问题一样

@寕: 请求一个用asp.net控件做的登录,用fiddler调试,返回如图的结果了,咋办?给个思路吧

@寕: 

这是没登录成功吧?怎么会用JS来跳转。。。

只要你完全模拟了浏览器的请求肯定是没问题的,可能你哪里漏了吧。

支持(0) 反对(0) 向往-SONG | 园豆:4853 (老鸟四级) | 2012-11-08 09:33

@向往-SONG: 难道这是aspx执行这段js后准备进行回传?

@向往-SONG: 哎,问题终于解决了,原来是用get方式请求验证码页面时,CookieContainer cookieContainer = new CookieContainer();这个东西没加进去,导致验证码验证失败!

 

多谢了!!!

0

Request.cookies

客户端也可以通过JS来获取cookie

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-06 21:29
0

Request.cookies

客户端也可以通过JS来获取cookie

jason2013 | 园豆:1998 (小虾三级) | 2012-11-07 08:38
0

看看这里,http://blog.csdn.net/ycl111/article/details/1517870,这是没有设置cookie的原因

az235 | 园豆:8483 (大侠五级) | 2012-11-07 10:10

我试试

0

seission需要Cookie

Alvin | 园豆:828 (小虾三级) | 2012-11-07 16:22
0

mark记录下

lovejean | 园豆:186 (初学一级) | 2018-12-19 09:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册