最近在项目中遇到的一个问题,有两个页面A.aspx与B.aspx,现在想在A页面用HttpWebRequest去获取B页面(用来发邮件,作为邮件正文用的),普通情况下获取很正常,代码如下
HttpWebRequest WRequest = (HttpWebRequest)HttpWebRequest.Create("http://192.168.0.18/b.aspx");
HttpWebResponse WResponse = (HttpWebResponse)WRequest.GetResponse();
using (StreamReader srd = new StreamReader(WResponse.GetResponseStream()))
{
//处理结果
}
WResponse.Close();
但是这样在B页面无法与A页面共享Session,于是我将Cookie也一起传过去,代码如下
HttpWebRequest WRequest = (HttpWebRequest)HttpWebRequest.Create("http://192.168.0.18/b.aspx");
WRequest.CookieContainer = new CookieContainer();
HttpCookie oCookie = Request.Cookies["ASP.NET_SessionId"];
Cookie oC = new Cookie();
oC.Domain = WRequest.RequestUri.Host;
oC.Name = oCookie.Name;
oC.Value = oCookie.Value;
WRequest.CookieContainer.Add(oC);
HttpWebResponse WResponse = (HttpWebResponse)WRequest.GetResponse();
using (StreamReader srd = new StreamReader(WResponse.GetResponseStream()))
{
//处理结果
}
WResponse.Close();
问题来了,虽然也能得到正确的结果,Session也能取到了,但是要等待很久,约1分钟。
经过测试,发现如果在Webform中将ASP.NET_SessionId这个Cookie值一起传过去,并且访问的是同网站下的另一页面,就会很卡,约1分钟才能有响应;不传这个Cookie或者传别的Cookie,或者访问另外网站或者用Winform访问,都不卡,很快就得到结果了。
好诡异的问题。。。。。