.NET CF中没有Cookie Container之类方便管理cookie的类,我刚刚简单的搜索了一下,找到一段用作Session管理器的代码:(原文见
这里)


????????
/**/
///?<summary>

????????///?This?field?contains?the?received?session?cookie

????????///?</summary>

????????
private
?
string
?cookie?
=
?
null
;



????????
/**/
///?<summary>

????????///?Http-Header?for?the?request?SessionCookie

????????///?</summary>

????????
private
?
const
?
string
?REQUESTHEADER_SESSIONCOOKIE?
=
?
"
Cookie
"
;



????????
/**/
///?<summary>

????????///?Http-header?for?the?response?SessionCookie

????????///?</summary>

????????
private
?
const
?
string
?RESPONSEHEADER_SESSIONCOOKIE?
=
?
"
Set-Cookie
"
;


????????
private
?
void
?ProcessResponse(System.Net.HttpWebResponse?response)


????????

{

????????????//?Is?the?cookie?present?in?the?response?

????????????if?(response.Headers.Get(RESPONSEHEADER_SESSIONCOOKIE)?!=?null)


????????????
{?

????????????????//?Store?the?cookie

????????????????cookie?=?response.Headers.Get(RESPONSEHEADER_SESSIONCOOKIE);

????????????}

????????}



????????
/**/
///?<summary>

????????///?This?override?will?tweak?the?request?to?allow?Session-cookies

????????///?</summary>

????????///?<returns>The?tweaked?request</returns>

????????
protected
?
override
?System.Net.WebRequest?GetWebRequest(Uri?uri)


????????

{

????????????System.Net.HttpWebRequest?request?=?(System.Net.HttpWebRequest)base.GetWebRequest(uri);


????????????//?Is?the?session?cookie?cached?

????????????if?(cookie?!=?null)


????????????
{?

????????????????//?Add?the?sessioncookie?to?the?request

????????????????request.Headers.Add(REQUESTHEADER_SESSIONCOOKIE,?cookie);

????????????}

????????????return?request;

????????}



????????
/**/
///?<summary>

????????///?This?override?will?tweak?the?response?to?allow?Session-cookies

????????///?</summary>

?????????
protected
?
override
?System.Net.WebResponse?GetWebResponse(System.Net.WebRequest?request)


????????

{

????????????System.Net.HttpWebResponse?response?=?(System.Net.HttpWebResponse)base.GetWebResponse(request);

????????????ProcessResponse(response);

????????????return?response;

????????}



????????
/**/
///?<summary>

????????///?This?override?will?tweak?the?response?to?allow?Session-cookies

????????///?</summary>

????????
protected
?
override
?System.Net.WebResponse?GetWebResponse(System.Net.WebRequest?request,?IAsyncResult?result)


????????

{

????????????System.Net.HttpWebResponse?response?=?(System.Net.HttpWebResponse)base.GetWebResponse(request,?result);

????????????ProcessResponse(response);

????????????return?response;

????????}
除了这种人工控制请求应答的消息头的方式,不知道在.NET CF中大家还有哪些方案来维系webservice的会话,不妨一同探讨一下:-) Regards 黄季冬