有关cookies值的获取问题
客户端访问webservice代码如下:
string cookies = string.Empty;
HttpCookie cokie = new HttpCookie("MyCook");//初使化
if (HttpContext.Current.Request.Cookies["MyCook"] != null)
{ cookies = HttpContext.Current.Request.Cookies["MyCook"].Value; }
string url = "http://localhost/INA_WebService/Service.asmx/ImportStyle";
string sendData = "param="+a;
string outputString = String.Empty;
HttpWebRequest hwrq = (HttpWebRequest)HttpWebRequest.Create(url);
hwrq.Method = "POST";
byte[] postData = System.Text.Encoding.UTF8.GetBytes(sendData);
hwrq.ContentType = "application/x-www-form-urlencoded";
hwrq.ContentLength = postData.Length;
Stream writeStream = hwrq.GetRequestStream();
writeStream.Write(postData, 0, postData.Length);
writeStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)hwrq.GetResponse();
StreamReader sr = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
outputString = sr.ReadToEnd();
sr.Close();
访问的webservice代码如下:
[WebMethod]
public bool ImportStyle()
{
string userName=DataOperation.GetCookies();
bool strbool = false ;
if (userName != "")
{
strbool = true;
}
else
{strbool = false;}
return strbool;
GetCookies()代码如下:
public static string GetCookies()
{
string cookies=string.Empty ;
HttpCookie cokie = new HttpCookie("MyCook");//初使化
if (HttpContext.Current.Request.Cookies["MyCook"] != null)
{ cookies = HttpContext.Current.Request.Cookies["MyCook"].Value;//输出全部的值
}
return cookies ;
}
问题: 调试发现红色字体的cookies值是存在的,但是红色字体的userName值为空,客户端返回的值是false。红色字体的cookies值是存在说明浏览器是存在cookies值的,但是为什么服务器端获取不到cookies值呢,请问这个怎么改能获取到
------最佳解决方案--------------------
cookies保存在客户端,你用两台电脑测试一下,可以获取cookies值
[其他解释]
你的客户端去访问
HttpContext.Current.Request.Cookies没有任何意义。你的客户端(实际上大概是asp.net程序)是去读取自己的客户端(客户端的客户端)的cookie,而不是给自己的服务器端推送cookie。
private void GetStringDataFromServer(string requestAddress, Cookie[] cookies)
{
Uri HttpSite = new Uri(requestAddress);
HttpWebRequest wreq = (HttpWebRequest)WebRequest.Create(HttpSite);
if (cookies != null)
{
wreq.CookieContainer = new CookieContainer();
for (int i = 0; i < cookies.Length; i++)
{
wreq.CookieContainer.Add(HttpSite, cookies[i]);
}
}
RequestState rs = new RequestState();
rs.Request = wreq;
IAsyncResult r = (IAsyncResult)wreq.BeginGetResponse(new AsyncCallback(RespCallback), rs);
allDone.WaitOne();
}
[其他解释]
自己顶一下啊,有没有人能解决啊
[其他解释]