http://blog.yes11.cn/session.rar
上边是下载地下.我真的无语了.那个程序是模拟post的.不知道为什么一次性post没有错.但分开就不行了. seesion就没了.
第一个按钮是分开post的.每二个是一次性post的.有三个页面 sp.aspx入口default.aspx 与action是被模拟的.代码很简单.大家看看..
action.aspx
protected void Page_Load(object sender, EventArgs e)
    {
        Response.ContentEncoding = System.Text.Encoding.Default;
        if (Session["a"] == null)
            Response.Write("session失去");
        else
        {
            if (Request.Form["validate"] == Session["a"].ToString())
                Response.Write("right");
            else
            {
                Response.Write("wrong");
            }
        }
    }
default.aspx<form id="form1" action="action.aspx" runat="server">
    <div>
    <input id="Hidden1" name="validate" value="<%=s %>" type="hidden" />&nbsp;
        <input id="Submit1" type="submit" value="submit" />
    </div>
    </form>后台有一点.超简单
主要是sp.aspx的public partial class session_sp : System.Web.UI.Page
{
    HttpWebRequest req;
    CookieContainer ReqCookies = new CookieContainer();
    string code=string.Empty;
    protected void Page_Load(object sender, EventArgs e)
    {        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://localhost/session/default.aspx");
        req.Accept = "*/*";
        req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)";
        CookieContainer ReqCookies = new CookieContainer();
        req.CookieContainer = ReqCookies;
        HttpWebResponse res = (HttpWebResponse)req.GetResponse();
        string strHtml;
        using (StreamReader sr = new StreamReader(res.GetResponseStream()))
        {
            strHtml = sr.ReadToEnd();
        }
        Regex r;
        MatchCollection m;
        r = new Regex(@"name=""validate"" value=""(.+?)""", RegexOptions.IgnoreCase);
        m = r.Matches(strHtml);
        code = m[0].Groups[1].Value;
        TextBox1.Text = code;
            }    protected void Button2_Click(object sender, EventArgs e)
    {
        //你要post的数据,格式可以使用sniffer得到
        req = (HttpWebRequest)HttpWebRequest.Create("http://localhost/session/action.aspx");
        req.Accept = "*/*";
        //req.Referer = "http://localhost/session/default.aspx";
        req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)";
        req.ContentType = "application/x-www-form-urlencoded";
        req.CookieContainer = ReqCookies;
        req.Method = "POST";
        string PostData = "validate=" + code;
        byte[] b = Encoding.Default.GetBytes(PostData);
        req.ContentLength = b.Length;
        using (System.IO.Stream sw = req.GetRequestStream())
        {
            sw.Write(b, 0, b.Length);
        }
        string strHtml=string.Empty;
        HttpWebResponse res = (HttpWebResponse)req.GetResponse();
        using (StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("gb2312")))
        {
            strHtml = sr.ReadToEnd();
        }
        Response.Write(strHtml);
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://localhost/session/default.aspx");
        req.Accept = "*/*";
        req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)";
        CookieContainer ReqCookies = new CookieContainer();
        req.CookieContainer = ReqCookies;
        HttpWebResponse res = (HttpWebResponse)req.GetResponse();
        string strHtml;
        using (StreamReader sr = new StreamReader(res.GetResponseStream()))
        {
            strHtml = sr.ReadToEnd();
        }
        Regex r;
        MatchCollection m;
        r = new Regex(@"name=""validate"" value=""(.+?)""", RegexOptions.IgnoreCase);
        m = r.Matches(strHtml);
        String myEmsbarCode = m[0].Groups[1].Value;
  
      
        //你要post的数据,格式可以使用sniffer得到
        req = (HttpWebRequest)HttpWebRequest.Create("http://localhost/session/action.aspx");
        req.Accept = "*/*";
        //req.Referer = "http://localhost/session/default.aspx";
        req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)";
        req.ContentType = "application/x-www-form-urlencoded";
        req.CookieContainer = ReqCookies;
        req.Method = "POST";
        string PostData = "validate="+myEmsbarCode;
        byte[] b = Encoding.Default.GetBytes(PostData);
        req.ContentLength = b.Length;
        using (System.IO.Stream sw = req.GetRequestStream())
        {
            sw.Write(b, 0, b.Length);
        }
        res = (HttpWebResponse)req.GetResponse();
        using (StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("gb2312")))
        {
            strHtml = sr.ReadToEnd();
        }
        Response.Write(strHtml);
      //  Response.Write(req.CookieContainer.GetCookies(new Uri("http://www.baidu.com")).Count);
    }
}